Aym*_*udi 4 .net c# asynchronous multitasking async-await
当我在C#上玩任务时,我想知道使用GetAwaiter()之间的区别是什么.OnCompleted()和回调
案例1: task1.GetAwaiter().OnCompleted()
Task task1 = new Task(() =>
{
//Do Work_1 here
});
task1.GetAwaiter().OnCompleted(() =>
{
//Do something here where Work_1 Completed
});
task1.Start();
Run Code Online (Sandbox Code Playgroud)
案例2: 回复
await Task2(() =>
{
//CallBack
});
private async Task Task2(Action callBack)
{
//do Work_2 here
await Task.Run(callBack);
}
Run Code Online (Sandbox Code Playgroud)
我想理解这一点,我想我错过了一些东西.
在讨论差异之前,我必须指出一件事:你不应该使用这两种方法中的任何一种.GetAwaiter()
在内部使用await
,它在一些专门的代码中很有用,但你不应该在普通代码中使用它.继续行动正是async
- await
试图避免的.
如果你想继续使用await
,或者可能ContinueWith()
.两者都具有可组合的优点:被调用者只返回一个Task
,然后调用者决定用它做什么.
话虽如此,但存在一些差异:
Task
失败也会继续运行. 归档时间: |
|
查看次数: |
2431 次 |
最近记录: |