gpt4 book ai didi

c# - 任务如何知道它何时完成?

转载 作者:行者123 更新时间:2023-11-30 21:48:25 24 4
gpt4 key购买 nike

任务 does not maintain a wait handle出于性能原因,只有在代码要询问其中之一时才懒惰地构造一个。

Task 如何知道它已经完成?

有人会争辩说,实现者在他们的实现中将结果设置在 TaskCompletionSource 上,但这只能解释现代实现和重写,例如 System.IO.FileStream.Begin/EndReadTask.

我遵循了 Task.IsComplete 属性;几乎在每个实例中,内部按位标志字段 (m_stateFlags) 都由 TrySetResult/TrySetException 方法设置以指示任务的状态。

但这并不涵盖所有情况。

这样的方法怎么样?

public async Task FooAsync()
{
await Task.Run(() => { });
}

最佳答案

How then does a Task know it has been completed?

正如我在我的博客(overviewmore detail)中所描述的,有两种任务:委托(delegate)任务(执行代码)和 promise 任务(代表一个事件)。

委托(delegate)任务在委托(delegate)完成时自行完成。

Promise 任务通过外部信号完成,使用 TaskCompletionSource<T> (或 BCL 内部的等效方法)。

关于c# - 任务如何知道它何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37668160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com