首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >任务的TaskCompletionSource

任务的TaskCompletionSource
EN

Stack Overflow用户
提问于 2013-07-06 03:57:53
回答 1查看 354关注 0票数 2

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-06 04:00:06

没有非通用版本。但是,Task是从Task派生的,所以您可以只使用TaskCompletionSource<bool>并返回任务。

代码语言:javascript
复制
Task SomeMethodAsync()
{
    var tcs = new TaskCompletionSource<bool>();

    // Implement method as needed

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

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

代码语言:javascript
复制
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
}

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17496083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档