CLR via C# 讀書筆記 3-5 .net framework4.0 新增類 Task(一種很好的非同步模型)

來源:互聯網
上載者:User

Task 是在.net framework 4.0中提供的新功能

主要用於非同步作業的控制

在很多時候他比Thread和ThreadPool提供更為強大的功能,並且更方便使用

 

1.demo

以下代碼是使用Task的一個demo

代碼

// Create a Task (it does not start running now)
Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 1000000000);
// You can start the task sometime later
t.Start();
// Optionally, you can explicitly wait for the task to complete
t.Wait(); // FYI: Overloads exist accepting timeout/CancellationToken
// You can get the result (the Result property internally calls Wait)
Console.WriteLine("The Sum is: " + t.Result); // An Int32 value

Sum是一個聲明好的外部函數, 當然我們也可以使用lambda來替代它

這幾句代碼聲明了一個Task 並且調用Start方法啟動他,然後使用Wait方法等待這個非同步任務的完成

 

 

 

2.Task的優勢

  1.Task可以很方便的控制是使用線程池還是使用線程來執行(也許以後還會增加更多的執行模型)

  2.Task<T> 允許輸入輸出強型別的參數

  3.使用Task可以很方便的控制 例如:等待,取消 Task (個人覺得這個是最大的優勢)

  4.可以很方便的處理到Task中發生的未處理的異常

  5.Task.ContinueWith方法可以很方便的安排Task之間的執行順序(例如通過參數TaskCountinuationOptions參數來控制 在某任務A執行完成,取消或者其他特定情況下,任務B立刻啟動接著執行,以下代碼顯示了等待不同情況的執行順序) 

代碼

Task<Int32> t = new Task<Int32>(n => Sum((Int32)n), 100000000);
t.Start();

t.ContinueWith(task => Console.WriteLine("The sum is: " + task.Result),
TaskContinuationOptions.OnlyOnRanToCompletion);//only completion
t.ContinueWith(task => Console.WriteLine("Sum threw: " + task.Exception),
TaskContinuationOptions.OnlyOnFaulted);//only exception
t.ContinueWith(task => Console.WriteLine("Sum was canceled"),
TaskContinuationOptions.OnlyOnCanceled);//only cencel

 

 

   6.可以通過Task.Status 很方便的查詢到一個Task當前的狀態(包括 建立,等待,運行,異常等)

  7.可以自訂TaskScheduler,來控制Task的執行, 目前已經有很多成熟的Scheduler提供在網路上(例如 IOTaskScheduler OrderedTaskScheduler 等..)

    

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.