c# - 具有附加状态的自定义 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# - 来自 Redirectresult 的意外“OPTIONS”方法
- javascript - 将值转换为全局变量
- c - 为什么我的线条以一种特殊的方式旋转?
- java - 跳过在 Maven 构建中运行 PITest
- azure - 作为 Azure DevOps 发布管道的一部分,从应用服务中删除文件
- angular - 当我在 Agular 的其他组件中使用服务类函数时,它返回未定义
- c# - 我如何注册组合键来播放声音
- flutter - Is it possible to have any widget like this in flutter
- r - 如何获得箱线图背后的统计数据?
- java - Spring-Boot如何在java中禁用“Transfer-Encoding:chunked”