c# - 我如何做等效的 TaskCompletionSource<nothing>?

标签 c# .net task-parallel-library

我想要一个 EventWaitHandle -like Task,我在一端等待它,然后将其设置为在另一端完成。 TaskCompletionSource几乎是我想要的,但它需要我传递一个值。我可以只使用一个虚拟值,但在我这样做之前,我想我会看看是否有更正确的解决方案。

重点是能用Task.WaitAny .

最佳答案

我在源代码中看到的最常见的场景就是创建一个空的 struct这相当于什么都没有。或使用 bool作为假人:

internal struct Void { }

进而:
var tcs = new TaskCompletionSource<Void>();

我在 BCL source code 中看到了这种常见模式还有:
// Special internal struct that we use to signify that we are not interested in
// a Task<VoidTaskResult>'s result.
internal struct VoidTaskResult { }

关于c# - 我如何做等效的 TaskCompletionSource<nothing>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31287559/

相关文章:

c# - 如何用 WCF 替换现有的 .Net 套接字服务器

c# - 使用异步任务不流动的逻辑 CallContext 值

c# - 超时异常 - 请求排队?线程不够?

c# - 是否可以将字节数组转换为AudioClip?

c# - Asp.Net WebApi。 HttpPost 是默认的?

c# - 从异步方法关闭 WCF 服务?

c# - SqlParameter.Add 和 AddWithValue 之间的区别

.net - razor 中的嵌套 for 循环

c# - 代码如何在 WebService 中运行?

c# - Task Parallel库的不同使用