KDe*_*ker 3 c# asynchronous task-parallel-library
我想我已经成功地把自己弄糊涂了一天.
public void DoSomething1()
{
Task.Delay(1000);
}
public async void DoSomething2()
{
await Task.Delay(1000);
}
Run Code Online (Sandbox Code Playgroud)
这两个函数在被调用时会发生什么变化有什么区别?使用async不返回的方法的目的是什么Task?
这两个函数在被调用时会发生什么变化有什么区别?
DoSomething1是一种同步方法.因此:
DoSomething都直接引发给调用者.DoSomething2是一种异步void方法.因此:
SynchronizationContext在DoSomething2开始执行时的当前时间上重新引发.这通常会导致程序终止.DoSomething2,也提出了对SynchronizationContext,具有相同的结果.使用不返回任务的异步方法的目的是什么?
async void这不是一件很自然的事情.例如,F#中根本不存在等价物.async void已添加到C#/ VB以使事件处理程序变为异步,而无需更改整个事件处理或委派系统.
简而言之,您应该避免async void,并且仅将它们用于事件处理程序(或事件处理程序的逻辑等效项,如ICommand.ExecuteMVVM中).
| 归档时间: |
|
| 查看次数: |
97 次 |
| 最近记录: |