电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

Task.Unwrap基本使用


发布日期:2023/1/26
 

这个扩展方法定义在TaskExtensions类型中命名空间在SystemThreadingTasksUnwrap会把嵌套的Task<Task>或者Task<Task<T》的结果提取出来

就像这样不用Unwrap的话

static void Main(string[] args)

{

doo()

TaskDelay(Wait()

}

static async void doo()

{

//运行嵌套的Task

//Task返回Task<Task<string》

//第一个await后result类型为Task<string>

var result = await TaskRun<Task<string》(() =>

{

var task = TaskRun<string>(() =>

{

TaskDelay(Wait()

return Mgen;

})

return task;

})

//第二个await后才会返回string

ConsoleWriteLine(await result)

}

使用Unwrap后结果可以直接从嵌套Task中提取出来

static async void doo()

{

//运行嵌套的Task

//Task返回Task<Task<string》

//await后类型为Task<string>Unwrap后result类型为string

var result = await TaskRun<Task<string》(() =>

{

var task = TaskRun<string>(() =>

{

TaskDelay(Wait()

return Mgen;

})

return task;

})Unwrap()

//不需要awaitresult已经是string

ConsoleWriteLine(result)

}

上一篇:基于windows平台的ZedGraph 应用

下一篇:VC实现系统热键激活后台服务程序