有没有办法将通过TaskCompletionSource驱动的任务设置为状态'正在运行'?

mac*_*nir 5 c# task-parallel-library

我正在使用TaskCompletionSource提供和驱动一个实例Task.我希望能够设置Task到状态,Running以指示任务是......'正在运行'但是我无法看到实现此目的的方法TaskCompletionSource.

有没有办法做到这一点?

And*_*ott 4

不,没有办法。

不管你是否喜欢我的答案,它都是正确的。:-)

以下是我的观点,并试图帮助您感觉更好。

Task.Status 有几个状态,仅当任务是计划任务时才设置和有用。来自 TaskCompletionSource 的任务不是计划任务。因此,WaitingToRun、Running 等概念不适用于传统的计划任务意义上。如果您确实有能力设置这些值,则必须决定对这些值应用什么语义,这可能与其他人对它们的解释方式发生冲突。

最终,我认为您的代码无论如何都不应该根据这些中间状态做出任何决定。这样做听起来像是“代码味道”。

  • 我不同意——如果永远不应该使用这些状态,为什么要暴露它们呢?如果我们乱用行话,我就会闻到一种“抽象的漏洞”。;-) 尽管如此,我认为你的答案是正确的——“没有办法”。谢谢 (4认同)