任何人都可以向我解释为什么第二个Working!
在Done
之后显示?异步/等待执行步骤
Stating
Doing Work
Working!
Done
Working!
Work completed
第二个问题,为什么我就不能做到像下面让任务结果:
Task result = await LongOperation();
而最后一个问题是什么是代表与AWAIT /异步例如使用Task.Run
的原因在我的代码?它可以在哪里使用,或者使用它不好?
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Starting");
var worker = new Worker();
worker.DoWork();
Console.WriteLine("Done");
Console.ReadKey();
}
}
public class Worker
{
public async void DoWork()
{
Console.WriteLine("Doing work");
await LongOperation();
await LongOperation();
Console.WriteLine("Work completed");
}
private async Task LongOperation()
{
Console.WriteLine("Working!");
await Task.Delay(200);
}
}
1.因为你调用了'LongOperation'两次2.因为这不是'await'的工作方式3.异步调用一个同步操作(将来请尽量保持它不变每个帖子有一个问题) –
请参阅[如何提问](http://stackoverflow.com/help/how-to-ask)。你应该避免在同一个线程中询问多个问题,并且它会使它成为一个我们很容易理解你是否提供了一些你所问的内容(特别是在你的问题中)第一个问题)的意思。 – stybl