码迷,mamicode.com
首页 > 其他好文 > 详细

async与await

时间:2015-09-10 19:02:40      阅读:121      评论:0      收藏:0      [点我收藏+]

标签:

async和await把异步编程从回调模式变成了顺序模式,更加简洁

public virtual async Task<bool> LogParticipate(string prizeName)
        {                         
            Task<bool> t =  Task.Run(() =>
            {
                Dictionary<string, string> dicPara = new Dictionary<string, string>();
                dicPara.Add("prizeName", prizeName);
                return MailHelper.Send(_cicid, "Ten Years-Lucky Roulette", dicPara,
                    Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "EmailTemplate"), "Roulette.html");
            });
            return await t;  
        }

以上await是挂起主线程,等待Task完成。Async则是异步方法的标识。

Await等同于t.GetAwaiter().GetResult();若不想挂起主线程,可以使用t.GetAwaiter().OnCompleted(() => { });

 

public async void DoRoulette()
        {
            var prize = GeneratePrize();
            
            Task<bool> t = LogParticipate(prize.Item1);

            GetWinningRate();

            //可执行回调内容
            bool result = await t;           
        }

Await和async并不会开启新的线程,依然是Task.Run或者Factory.StartNew开启的。

async与await

标签:

原文地址:http://www.cnblogs.com/zzq417/p/await.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!