【问题标题】:How to create a Task<> I can complete manually如何创建任务<>我可以手动完成
【发布时间】:2015-01-12 03:42:02
【问题描述】:

在对组件进行单元测试时,我需要验证组件对在不同时间完成的任务的反应。

如何创建可以随意解析的Task&lt;&gt;

【问题讨论】:

    标签: c# task-parallel-library


    【解决方案1】:

    您可以使用TaskCompletionSource 来创建完全“手动”的任务。

    表示未绑定到委托的任务的生产者端, 通过 Task 属性提供对消费者端的访问。

    将完成源的Task 属性分发给消费者,并在其上(随意)调用SetResult 以完成任务。请注意,您还有 SetCanceledSetException 分别代表取消和失败。

    【讨论】:

    • 谢谢!你知道确切的延续将在什么时候运行吗?何时调用SetResult?过一段时间?有办法控制吗?
    • 它不是线程特定的——Set*** 方法可以在任何线程上调用,并且对象本身是线程安全的。它还提供了TrySet*** 系列方法来处理比赛。
    • 任务完成时将运行延续(由延续上的任务状态过滤器确定,如果适用)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-30
    相关资源
    最近更新 更多