C# 如何实现TaskCompletionSource的等效功能<;什么都没有>;?

C# 如何实现TaskCompletionSource的等效功能<;什么都没有>;?,c#,.net,task-parallel-library,C#,.net,Task Parallel Library,我希望有一个类似的任务,我在一端等待它,然后在另一端将它设置为完成。这几乎是我想要的,但它需要我传递一个值。我可以使用一个虚拟值,但在我这么做之前,我想我会看看是否有更正确的解决方案 关键是要能够使用。我在源代码中看到的最常见的场景就是创建一个空的结构,它等于零。或者使用bool作为虚拟对象: internal struct Void { } 然后: var tcs = new TaskCompletionSource<Void>(); var tcs=new TaskCompl

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


关键是要能够使用。

我在源代码中看到的最常见的场景就是创建一个空的
结构,它等于零。或者使用
bool
作为虚拟对象:

internal struct Void { }
然后:

var tcs = new TaskCompletionSource<Void>();
var tcs=new TaskCompletionSource();
我也看到了这种常见的模式:

//我们用来表示不感兴趣的特殊内部结构
//任务的结果。
内部结构VoidTaskResult{}

否。使用伪值。或者,可能:
内部结构VoidTaskResult{public static readonly VoidTaskResult value=default(VoidTaskResult);}
,这样就可以执行
tcs.SetResult(VoidTaskResult.value)
// Special internal struct that we use to signify that we are not interested in
// a Task<VoidTaskResult>'s result.
internal struct VoidTaskResult { }