昨天,我学习了C#多任务处理的基本知识。虽然技术上我似乎理解它是如何工作的,但我就是不明白为什么它是这样做的。请记住,我对这个话题还是个新手,这可能是我理解错了的一个迹象。例如,您可以这样写:
public async Task SomeEventHandler()
{ if(foo) return await SomeMethod("a");
else return await SomeMethod("b");
}
async Task<int> SomeMethod(string whatever)
{ string bar = await SomeInput();
return bar + " " + whatever;
}
这里我没有看到的是为什么需要async和await关键字?为什么不能写:
public void SomeEventHandler()
{ if(foo) return SomeMethod("a");
else return SomeMethod("b");
}
int SomeMethod(string whatever)
{ string bar = SomeInput();
return bar + " " + whatever;
}
输入法实现如下:
public string SomeInput()
{ while(!InputObject.stuffIncoming)
{ CurrentTheard.DoSomethingElse();
}
return InputObject.Next();
}
有人能解释为什么这样做行不通,或者行不通?编辑:根据答案,似乎出于某种原因,正在等待的方法不能像常规方法一样被调用,反之亦然。但这是什么原因造成的呢?至少在D中,您可以为同一个函数调用或生成一个theard。
async和await背后的思想是提供一种简单的方法来实现“带回调的并行执行”方法。只要使用关键字
这样做的好处是,您的代码仍然易于阅读。您不必费心处理