上面的代码类似于: Task.Run(() => { }).ContinueWith(t => Do(LoadData())); 意思就是: loadData 如果耗时较长那么上述代码会产生阻塞,为了LoadData不阻塞 特意加了 await Task.Yield(); 意思就是: 先排个队. 再来看注释:Creates an awaitable task that asynchronously yields back to the current context when awaited.…
关于async,await,task的用法和解释这里就不要说明了,网上一查一大堆.至于为啥还要写这篇文章,主要是其他文章水分太多,不适合新手学习和理解.以下内容纯属个人理解,如果有误,请高手指正.本文只对以下这段代码包含的异步编程写法作说明: using System; using System.Threading.Tasks; using System.Threading; namespace ConsoleTest { class Program { static void Main(str…
在如下代码中: public async Task<string> GetData() { return await DoWork(); } 在UI线程中调用 var data = GetData().Result; 此时线程会卡死: 两种解决办法: 1,所有调用方法链中使用async.await方式调用. var data = await GetData(). 2, 去掉调用链中的async,await,直接返回Task类型. public Task<string> GetDat…