C 筆記22 多執行緒之停止或取消執行緒

2022-02-20 05:54:55 字數 881 閱讀 4074

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寫在前面 多執行...