【发布时间】:2015-02-15 02:53:17
【问题描述】:
我实现了一个在云上运行的服务。我有一个方法fastExcute(),它可以非常快地进行一些计算。
我需要在方法中添加一个调用IndependentBackgroundMethodAsync() 到其他可以在后台执行的方法,它何时完成它的工作并不重要,但它应该完成!它最终将完成其工作的主要内容
所以我想这样做:
fastExecute()
{
Task task = IndependentBackgroundMethodAsync();
//fast code
await t; < - could cause fastExecute not to be fast
}
另一方面,使代码成为:
fastExecute()
{
Task task = IndependentBackgroundMethodAsync();
//fast code
}
不保证 IndependentBackgroundMethodAsync 最终会被执行并完成其工作
什么是做我需要做的最佳实践?
【问题讨论】:
-
方法fastExecute()是否需要后台执行的结果?
-
你为什么认为
await task会导致你的方法不能“快速”执行? -
另外,解释一下“快速”的实际含义会很好。
-
@OldFox - 不,它没有
-
@YuvalItzchakov - ahalan :) IndependentBackgroundMethodAsync 可能需要很长时间才能执行。据我了解,等待等待 IndependentBackgroundMethodAsync 完成其执行:因此,如果原始 fastExecute 需要 1ms 并且 IndependentBackgroundMethodAsync 总共需要 100m,则等待将导致 fastExecute 在 100.001s 期间运行
标签: c# azure asynchronous cloud async-await