我该如何做与TaskCompletionSource<nothing>等效的事情?

问题描述 投票:0回答:2

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

重点是能够使用Task.WaitAny

c# .net task-parallel-library
2个回答
5
投票

我在源代码中看到的最常见的场景就是简单地创建一个空的

struct
,它相当于什么都没有。或者使用
bool
作为虚拟对象:

internal struct Void { }

然后:

var tcs = new TaskCompletionSource<Void>();

我也在 BCL 源代码中看到了这种常见模式:

// Special internal struct that we use to signify that we are not interested in
// a Task<VoidTaskResult>'s result.
internal struct VoidTaskResult { }

0
投票

您可以将第三方解决方案与 TaskCompletionSource 结合使用。

我们使用这个:Bolts-Swift

© www.soinside.com 2019 - 2024. All rights reserved.