我可能缺少一些东西,但是这样做有什么区别:
public void MyMethod() { Task t = Task.Factory.StartNew(DoSomethingThatTakesTime); t.Wait(); UpdateLabelToSayItsComplete(); } public async void MyMethod() { var result = Task.Factory.StartNew(DoSomethingThatTakesTime); await result; UpdateLabelToSayItsComplete(); } private void DoSomethingThatTakesTime() { Thread.Sleep(10000); }
我可能会缺少一些东西
你是。
Task.Wait和和有await task什么区别?
Task.Wait
await task
您从餐厅的服务员那里订购午餐。下订单后的片刻,一个朋友走进来,坐在您旁边,开始对话。现在,您有两个选择。在任务完成之前,您可以忽略您的朋友- 您可以等到汤到达时再等待,而无需执行其他操作。或者您可以回复您的朋友,当您的朋友停止讲话时,服务员会带您汤。
Task.Wait阻止任务直到任务完成- 在任务完成之前,您将忽略您的朋友。await继续在消息队列中处理消息,当任务完成时,它会排队显示一条消息,提示“在等待后从您离开的地方取走”。您与朋友交谈,谈话中断时,汤就到了。
await