Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提升程序的响应能力。好比:多线程
Application area Supporting APIs that contain async methods架构
Web access HttpClient , SyndicationClient异步
Working with files StorageFile, StreamWriter, StreamReader, XmlReaderasync
Working with images MediaCapture, BitmapEncoder, BitmapDecoderspa
WCF programming Synchronous and Asynchronous Operations.net
Async, Await 不会产生新的线程。 可是Task.Run 方法就是多线程的。 Asynchronous code is code that returns upon completion. By Task.Run, we can make is a multithreaded.线程
Take files as an example I encountered today:code
public async Task SendFallMail(string path){ try { mail.Subject = subjectFall; mail.Body = "Fall down!"; using (MailMessage ms = mail) { ms.Attachments.Add(new Attachment(path)); using (SmtpClient sc = SmtpServer) { Task t = Task.Factory.StartNew(() => { sc.Send(ms); }); await t; } } File.Delete(path); } catch (Exception ex) { MessageBox.Show(ex.ToString()); }
It should wait t which is sending an e-mail wihich attached an picture in path.xml
Then delete the pic in path, wihch is working properly after I use the using statement...blog
Without using the using statement, it shows IO exception said: