async 声明的方法会开启新线程执行, 不会阻塞主线程.
await 声明的方法, 会将在其之后的code 打包成委托, 在完成后执行打包的代码.
public A()
{
B();
C();
}
public async void B()
{
var result = await D(); //此处会异步处理D,同时将E()打包成委托,在D()完成后执行
E();
}
//无返回值
public Task D()
{
return Task.Run(()=>
do something;
return null;
);
}
//有返回值
public Task<T> D()
{
return Task.Run(()=>
do something;
retrun T;
);
}
代码执行顺序为:
A() --> B() / C() --> D() --> E()