gpt4 book ai didi

c# - 任务的 TaskCompletionSource

转载 作者:行者123 更新时间:2023-11-30 20:56:28 27 4
gpt4 key购买 nike

如何创建 TaskCompletionSource对于 Task而不是 Task<TResult>

最佳答案

没有非通用版本。然而, Task<T> 源自 Task , 所以你可以只使用 TaskCompletionSource<bool>并返回任务。

Task SomeMethodAsync()
{
var tcs = new TaskCompletionSource<bool>();

// Implement method as needed

return tcs.Task; // Return the Task<bool> as a Task
}

请注意,我使用的是 bool仅仅因为它是一个小值类型,结果将被“丢弃”。这里的另一种选择是制作您自己的自定义类型并返回它,即:

private struct EmptyType {}

Task SomeMethodAsync()
{
var tcs = new TaskCompletionSource<EmptyType>();

// Implement method as needed
// Use tcs.SetResult(default(EmptyType)) or similar

return tcs.Task; // Return the Task<bool> as a Task
}

这里的主要优点是类型尽可能小(浪费最少),并且类型不建议结果中包含“值”(如果消费者确实使用反射等)。

关于c# - 任务的 TaskCompletionSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17496083/

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