您的位置:首页 > 大数据 > 人工智能

.NET中async与await的使用

2017-02-27 22:39 621 查看

.NET中async与await的使用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;

namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{

Console.WriteLine("主线程A:" + Thread.CurrentThread.ManagedThreadId);

new Action(() => { }).BeginInvoke(new AsyncCallback(t => {

Console.WriteLine("异步委托线种F:" + Thread.CurrentThread.ManagedThreadId);

Console.WriteLine("AsyncState:"+((IAsyncResult)t).AsyncState);

Console.WriteLine(DoBigThing().Result);

}), 2);

Console.WriteLine("主线程E:" + Thread.CurrentThread.ManagedThreadId);

Console.ReadKey();

}

private static async Task<string> DoBigThing()
{
Console.WriteLine("async方法进入时线程B:" + Thread.CurrentThread.ManagedThreadId);

//await 一个耗时的任务
string re = await Task<string>.Run(() =>
{
Console.WriteLine("await方法内运行的线程C:" + Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(TimeSpan.FromSeconds(5));
return "HI";
});

Console.WriteLine("await方法执行后的下一行代码的线程D:" + Thread.CurrentThread.ManagedThreadId);
return re;

}

}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息