CLR via C# 筆記 ----Task(任務) 2
Task的取消
CancellationTokenSource用來取消Task,可以為Task的建構函式傳遞一個此類的例項。
當呼叫例項的cancel方法時,Task會被提意取消
為何說是提意,因為取消是協作式的,也就是說你這邊提意了,Task的工作函式裡還必須顯示的寫一點響應邏輯才能真正的取消執行。在工作函式內部,通常在一個迴圈內,持續呼叫CancellationTokenSource例項的token的ThrowIfCancellationRequested()方法來確實的執行任務的取消。而工作函式中的source例項 需要通過引數傳遞,或者lamda捕捉。
在獲取結果的程式碼裡可以捕捉到這個異常,從而知曉任務被取消了
另外,如果一個任務還沒有開始,就呼叫了和他關聯的tokenSource的cancel的話 任務會被標記為已經完成(Result會丟擲異常)
相關推薦
CLR via C# 筆記 ----Task(任務) 2
Task的取消 CancellationTokenSource用來取消Task,可以為Task的建構函式傳遞一個此類的例項。 當呼叫例項的cancel方法時,Task會被提意取消 為何說是提意,因為取消是協作式的,也就是說你這邊提意了,Task的工作函式裡還必須顯示的寫一點響應邏輯才能真
CLR via C# 筆記 ----Task(任務) 1
直接給執行緒池新增工作項的方式很直接,但是無法得知工作項何時結束,並且不能獲得返回值 於是,CLR提供了一個Task類封裝了工作項 以下三種寫法某種意義上來說是等價的 //1作為object傳遞(僅僅是舉例的作用),當回撥需求一個ojbect引數時,需要額外傳遞這個引數
CLR via C# 筆記 ----執行緒基礎
在Windows中,程序是對應用程式需要的資源(記憶體)的抽象,就好像程式正在獨佔著這些資源(虛擬記憶體)一樣 執行緒是對執行應用程式的cpu的抽象,就好像這個程式正在獨佔著這個cpu一樣(然而此執行緒 會被其他執行緒搶佔) 在Windows中,程序是十分昂貴的,建立一個程序要花幾秒鐘的時間
<NET CLR via c# 第4版> 讀書筆記--目錄
www 裏的 -- 即使 讀書筆記 link 很好 har 知識點 <NET CLR via c# 第4版>個別章節雖讀過多次,但始終沒有完整讀過這本書.即使看過的那些,時間一長,也忘記了大部分.趁著最近不忙,想把這本書好好讀一遍,順便記下筆記,方便隨時查看
CLR via C#讀書筆記 CLR寄宿和AppDomain
利用 create 控制 jmp 代理 情況 note 系統目錄 exce 寄宿 寄宿是指讓其他應用程序(非托管代碼)使用CLR的能力,比如自己用C++開發的窗體能創建CLR實例。 托管代碼也能調用非托管代碼 [DllImport("kernel32.d
CLR via C# 讀書筆記-27.計算限制的異步操作(上篇)
top oid 輔助線 var 思考 read 運行 簡單例子 class 前言 學習這件事情是一個習慣,不能停。。。另外這篇已經看過兩個月過去,但覺得有些事情不總結跟沒做沒啥區別,遂記下此文 1.CLR線程池基礎 2.ThreadPool的簡單使用練習 3.執行上下文 4
CLR via c#讀書筆記九:字符、字符串和文本處理
頻繁 方法名 ros obj utf8 via title col point 1、在.NET Framework中,字符總是表示成16位unicode代碼值(關於unicode、utf8等可以到http://www.ruanyifeng.com/blog/2007/10/
CLR via C#學習筆記-第四章-類型基礎-命名空間和程序集
程序集 microsoft 集中 歧義 str 可能 ring 需要 idg 4.3 命名空間和程序集 使用using指令簡化命名空間 C#編譯器通過using指令提供這個機制,例如 using System.IO; using System.Text; 只需要在代碼中
CLR via C#學習筆記-第四章-類型基礎-所有類型都從System.Object派生
回收 spa 操作 哈希 包括 生成 自動生成 返回 equals 4.1 所有類型都從System.Object派生 System.Object類型 運行時要求每個類型最終都從System.Object類型派生 也就是說,以下兩個類型定義完全一樣 //隱式派生自Syst
CLR via C#學習筆記-第四章-類型基礎-運行時的相互關系
分配內存 ring type類 實現 語句 初始化 sem strong 允許 4.4 運行時的相互關系 已加載CLR的一個Windows進程,該進程可能有多個線程。線程創建時會分到1MB的棧。棧空間用於向方法傳遞實參,方法內部定義的局部變量也在棧上。 以下是方法M1和M2
CLR via C#學習筆記-第五章-基元類型、引用類型和值類型-編程語言的基元類型
語法 是我 strong new 完全 type 風格 基本類 直接映射 5.1 編程語言的基元類型 FCL類型 使用以下語法分配一個整數 System.Int32 a=new System.Int32(); 這種語法較為繁瑣,C#允許換用如下所示的語法 int a=
CLR via C#學習筆記-第五章-引用類型和值類型
引用類型 tro 生成 形式 編譯 就是 type 完全匹配 成員 5.2 引用類型和值類型 使用引用類型 CLR支持兩種類型:引用類型和值類型。雖然FCL的大多數類型都是引用類型,但程序員用的最多的還是值類型。 引用類型總是從托管堆分配,C#的new操作符返回對象內存地址
CLR via C#學習筆記-第五章-值類型的裝箱和拆箱
總結 一行 other 對象的引用 返回對象 line 集合類 args math 5.3 值類型的裝箱和拆箱 裝箱 值類型比引用類型“輕”,原因是他們不作為對象在托管堆中分配,不被垃圾回收,也不通過指針進行引用。 但許多時候都需要獲取對值類型實例的引用。例如,假定要創建A
CLR via C#學習筆記-第五章-使用接口更改已裝箱值類型中的字段
就是 nal static 正常 led 垃圾回收 版本 poi over 5.3.1 使用接口更改已裝箱值類型中的字段(以及為什麽不應該這麽做) 下面通過一些例子來驗證自己對值類型、裝箱、拆箱的理解程度。 使用正常方法的代碼演示 internal struct Poin
CLR via C#學習筆記-第五章-對象相等性和同一性
有助於 equals 轉型 lean 默認 object類 虛方法 nbsp 機制 5.3.2 對象相等性和同一性 開發人員經常寫代碼比較對象。例如,有時要將對象放到集合,寫代碼對集合中的對象排序、搜索或比較。 本節將討論相等性和同一性謀害將討論如何定義正確實現了對象相等性
CLR via C#學習筆記-第六章-靜態類
eth clas cme rop () 接口 bstr field icm 6.4 靜態類 有一些永遠不需要實例化的類,例如Console,Math等。 這些類只有static成員。事實上,這種類的唯一作用就是組合一組相關的成員。 例如Math類就定義了一組執行數學運算的方
CLR via C#學習筆記-第六章-CLR如何調用虛方法、屬性和事件
style err rri 實參 寫代碼 調查 pre 好的 屬性 6.6.1 CLR如何調用虛方法、屬性和事件 本節重點是方法,但討論也與虛屬性和虛事件密切相關。屬性和事件實際作為方法實現,以後的章節會討論他們。 方法 方法代表在類型或類型的實例上執行某些操作的代碼。
CLR via C#學習筆記-第六章-對類型進行版本控制時的虛方法的處理
兩種 編譯器 當前 new 學習筆記 on() 定義 類定義 sealed 6.6.3 對類型進行版本控制時的虛方法的處理 如果類型要作為基類型使用,增加或修改它的成員時務必非常小心。 隱藏基類的同名實例方法 假定CompanyA定義了Phone類型 namespac
CLR via C#學習筆記-第九章-參數和返回類型的設計規範
nbsp 其他 oid class style network ring enum 學習 9.5 參數和返回類型的設計規範 聲明方法的參數類型,應盡量指定最弱的類型,寧願要接口也不要基類。 例如寫方法來處理一組數據項,最好用接口,比如IEnumerable<T>
CLR via C#學習筆記-第十章-有參屬性
get 類型參數 第十章 自動 spa ... ring 歧義 訪問性 10.2 有參屬性 屬性的get訪問器不接受參數,因此稱為無參屬性。 C#還支持有參屬性,他的get訪問器方法接受一個或多個參數,set訪問器方法接收兩個或多個參數,C#稱之為索引器。 C#使用數組風格