C# Async, Await and using statements

Async, Await 是基于 .NEt 4.5架构的, 用于处理异步,防止死锁的方法的开始和结束, 提升程序的响应能力。好比:多线程

Application area           Supporting APIs that contain async methods架构

 Web access                    HttpClient , SyndicationClient异步

 Working with files           StorageFileStreamWriterStreamReaderXmlReaderasync

 Working with images       MediaCaptureBitmapEncoderBitmapDecoderspa

 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: 

Process Cannot Access the file “\Path” because it is being used by some other process

相关文章
相关标签/搜索