【发布时间】:2014-12-19 14:50:12
【问题描述】:
实际上,我在理解异步原理方面遇到了一些问题。有人可以告诉我以下代码示例之间的区别吗?如果有人认为,这个例子是完全错误的,这家伙能给我纠正吗?
这是我的代码:
private async void DoHardStuffAsync()
{
var result = DoHardStuff();
var secondResult = DoHardStuff();
var thirdResult = DoHardStuff();
await Task.WhenAll(result, secondResult, thirdResult);
MessageBox.Show(result.Result + secondResult.Result + thirdResult.Result);
}
private Task<string> DoHardStuff()
{
return Task.Run(() =>
{
var time = DateTime.Now;
while (DateTime.Now.Subtract(time).Milliseconds < 900)
{ }
return "finished";
});
}
还有这个:
private async void DoHardStuffAsync()
{
var result = DoHardStuff();
var secondResult = DoHardStuff();
var thirdResult = DoHardStuff();
MessageBox.Show(await result + await secondResult + await thirdResult);
}
为什么 async != 并行?我应该在什么情况下使用异步以及我应该在什么情况下使用并行(例如任务、线程)?
【问题讨论】:
标签: c# asynchronous parallel-processing async-await task