<分区>
昨天,我学习了 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。