熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Task.Unwrap基本使用

2013-11-13 10:29:57  來源: .NET編程 

  這個擴展方法定義在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)

  }


From:http://tw.wingwit.com/Article/program/net/201311/13821.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.