我应该在下面的代码中使用 taskThatReturns.Wait()
吗?或者我可以省略它,因为根据我的理解 taskThatReturns.Result
无论如何都会等待。
Task<string> taskThatReturns = new Task<string>(MethodThatReturns);
taskThatReturns.Start();
taskThatReturns.Wait();
Console.WriteLine(taskThatReturns.Result);
最佳答案
Wait()
的来电在访问Result
之前没有必要。
查看 Task
的引用码和 Task<TResult>
显示void Wait()
Result
的方法和 getter属性最终进入执行实际等待的方法:
internal bool InternalWait(int millisecondsTimeout, CancellationToken cancellationToken)
两个代码路径都将相同的参数值发送到 InternalWait
- 无限等待和默认取消 token 。
如果您调用Wait
在访问Result
之前,getter 内通向 InternalWait
的代码路径将被跳过,因为已知任务已完成。但是,这两种情况的最终结果将保持相同。
注意:此答案有意忽略优化代码片段的机会。
关于task - 我应该使用 Task.Wait() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52763926/