jor*_*hmv 1 c# performance asynchronous
我正在看一些代码执行以下操作:
Task<SomeType> t1 =
Task.Factory.StartNew(() => Service.GetSomething(readQuery, contextId));
Task.WaitAll(t1);
Run Code Online (Sandbox Code Playgroud)
只做一个异步任务然后等待它有什么好处?执行时间将是相同的(如果不是更多是由于async将添加的一些开销),但也许处理器级别的东西?
我只想弄清楚这段代码是否是不必要的(我认为是这样),如果我可以把它改成简单的电话,感谢你的想法.
只做一个异步任务然后等待它有什么好处?执行时间将是相同的(如果不是更多是由于async将添加的一些开销),但也许处理器级别的东西?
通常,没有任何好处(并且涉及额外的开销),除非您在启动任务和阻止等待它之间执行其他工作.
在某些情况下可能会有一个好处,但只有在您Task使用以特定TaskScheduler方式卸载工作的特定计划时才会出现这种情况(即:将任务推送到UI线程).
此外-通常情况下,如果在等待一个任务,而不是使用Task.WaitAll,你可以直接打电话Wait()(或取Task<T>的Result):
// Just block until it's done
t1.Wait();
// OR:
// Block then get the result
SomeType result = t1.Result;
Run Code Online (Sandbox Code Playgroud)
Task.WaitAll() 如果你在等待多个任务,那真的是合适的.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |