首页 > 解决方案 > 具有附加状态的自定义 Task-Like 类

问题描述

我的问题是基于这篇文章

如果可以扩展此任务之类的场景以返回结果值以外的其他状态或值,我正在徘徊。要设置基线,只需下面一段简单的代码,显示如何检查任务的完成状态。

async Task Method()
{
    var task = // some method that returns a Task<int>
    Console.WriteLine(task.IsCompleted); // prints false
    await task;
    Console.WriteLine(task.IsCompleted); // prints true
}

所以我很好奇的是,在创建自定义任务(如类)时是否可以扩展它以返回您自己设置的附加状态属性。对于我的示例,假设我想要一个自定义任务来响应来自执行异步 http 操作的方法的响应。假设我已经创建了一个任务,例如对象Response<T>,并按照上面链接的文章设置了构建器和等待器对象。

是否可以扩展响应对象之类的任务以返回HttpStatusCode状态以及 IsCompleted,以便您可以通过类似于下面的方法访问它。

async Task Method()
{
    var response = // some method that returns a Response<Dto>
    Console.WriteLine(response.HttpStatusCode); // prints null
    Console.WriteLine(task.IsCompleted); // prints false
    var dto = await response;
    Console.WriteLine(task.HttpStatusCode); // prints say 'OK'
    Console.WriteLine(task.IsCompleted); // prints true
}

标签: c#async-await

解决方案


推荐阅读