你的位置:首页 > 软件开发 > ASP.net > Async and Await 异步和等待

Async and Await 异步和等待

发布时间:2015-09-25 11:00:29
【第一次这么耐下性子认真写博客,虽然觉得很认真了,当毕竟是第一次嘛,以后再看肯定觉得很不咋滴的,更何况园子里有那么多的高人和大侠,这篇文章就权当练练手了,熟悉一下用客户端发表博客了,也希望大家多多照顾新人,这厢有礼了!】下面正式开始,GO!首先,号外号外:异步将从根本上改变大多数 ...

【第一次这么耐下性子认真写博客,虽然觉得很认真了,当毕竟是第一次嘛,以后再看肯定觉得很不咋滴的,更何况园子里有那么多的高人和大侠,这篇文章就权当练练手了,熟悉一下用客户端发表博客了,也希望大家多多照顾新人,这厢有礼了Async and Await 异步和等待!】下面正式开始,GO!


首先,号外号外:异步将从根本上改变大多数编写代码的方式。是的,我相信异步/等待将会比Linq的影响更大。理解异步将会是未来几年的基本必须品。

Introducing the Keywords 介绍关键字

最简单的异步方法的样子就像下面这样:

public async TaskDoSomethingAsync(){ awaitTask.Delay(100);//异步等待100ms}

Avoiding Context:避免上下文

多数时候,你不需要同步返回到main上下文。记住:大多数异步方法被组合设计--他们等待其他多个操作,每一个操作本身代表一个异步操作(每个异步操作又可以被多个异步操作组合)。

这种情况下,你想要告诉异步者(awaiter)通过调用ConfigureAwait并且传递false不要捕捉当前上下文,比如:

private async TaskDownloadFileAsync(get='_blank'>string fileName)    {      // 使用HttpClient或其他东西来下载文件内容。      var fileContents = await DownloadFileContentsAsync(fileName).ConfigureAwait(false);// 注意因为 ConfigureAwait(false),此时我们就不在原始的上下文了.      // 取而代之的是,我们正运行在线程池上.      // 将文件内容写入磁盘文件.      await WriteToDiskAsync(fileName, fileContents).ConfigureAwait(false);    }    // WinForms和 WPF均适用.这次没有调用ConfigureAwait(false)     private async void DownloadFileButton_Click(object sender, EventArgs e)    {      // 当我们异步等待的时候,ASP.NET线程没有被文件下载阻塞。      await DownloadFileAsync(fileNameTextBox.Text);// 因为我们还处于UI线程上,所以还可以直接访问UI元素。      resultTextBox.Text = "File downloaded!";    }

原标题:Async and Await 异步和等待

关键词:异步

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。