c#筆記22:多執行緒之停止或取消執行緒
1:為什麼不建議使用abort取消
2:如何是正確的取消
3:framework4中的取消
1:為什麼不建議使用abort取消
來看下面的**:
using (filestream fs = file.open(mydatafile,filemode.open, fileaccess.readwrite, fileshare.none))
this using block is really shorthand for
this:
filestream fs = file.open(mydatafile,
filemode.open, fileaccess.readwrite, fileshare.none);
tryfinally
假設你的工作執行緒已經進行到finally裡面,這個時候,ui執行緒呼叫了該執行緒的abort()方法,則很有可能,在disp.dispose()還沒有執行的時候,工作執行緒跳出finally**塊了。很好,這樣你的fs就永遠不會被close了。不是說finally會永遠被執行嗎,是的,大多數情況下是的,但不包括呼叫thread.abort所引發的threadabortexception
異常。
鑑於此理由,不建議使用abort。
2:如何是正確的取消
通過前幾章的知識,通過訊號量、輔助標識變數來取消。但仍有一種情況,如下執行你想要的取消,如大資料庫的還原。誰知道,請告訴我。
3:framework4中的取消
檢視
C 多執行緒之建立多執行緒CreateThread
includehandle winapi createthread in opt lpsecurity attributes lpthreadattributes,in size t dwstacksize,in lpthread start routine lpstartaddress,in op...
Android 多執行緒之可以重複啟動與停止的服務
多執行緒環境下為了避免死鎖,一般提倡開放呼叫,開放呼叫可以避免死鎖,它的代價是失去原子性。但是在有些時候會顯得邏輯錯誤,例如 例如class a if changed boolean isstarted void stop if changed 在單執行緒環境下這個 沒有任何問題。可是在多執行緒環境...
C 多執行緒之旅 3
閱讀目錄 一 介紹 二 通過tpl進入執行緒池 三 不用tpl進入到執行緒池 v部落格前言 先交代下背景,寫 c 多執行緒之旅 這個系列文章主要是因為以下幾個原因 1.多執行緒在c s和b s架構中用得是非常多的 2.而且多執行緒的使用是非常複雜的,如果沒有用好,容易造成很多問題。v寫在前面 多執行...