多執行緒 BackgroundWorker

2021-05-24 01:14:19 字數 1431 閱讀 5920

backgroundworker 事件有三個:

dowork  呼叫 runworkerasync()方法時引發

progresschanged  呼叫 reportprogress()方法時引發

runworkercompleted  當後台操作已完成、被取消或引發異常時引發

1) backgroundworker.dowork

在此,將耗時的工作寫在dowork下進行後台執行。

dowork 事件處理程式中的**應定期檢查 cancellationpending 屬性值,判定是否終止操作。

當終止操作時,system.componentmodel.doworkeventargs 的 cancel 標誌設定為 true。同時,將事件runworkercompleted 中system.componentmodel.runworkercompletedeventargs的cancelled 設定為 true。

如果操作產生了結果,則將結果分配給 doworkeventargs.result 屬性( e->result );

此結果還可用於runworkercompletedeventargs.result 屬性中的 runworkercompleted 事件處理程式。

2) backgroundworker. progresschanged 如果需要後台操作報告其進度,則可以呼叫 reportprogress 方法來引發 progresschanged 事件。

public void reportprogress ( int percentprogress );

public void reportprogress ( int percentprogress, object userstate );

percentprogress 代表當前進度,範圍從0-100.

進度值為: e->progresspercentage

3) backgroundworker.runworkercompleted

當後台操作已完成、被取消或引發異常時發生runworkercompleted事件。

將dowork完成後,其他的相關處理顯示等操作寫在這裡,如果需要處理的結果,則呼叫e->result。

若要在後台執行耗時的操作,請建立乙個 backgroundworker,偵聽那些報告操作進度並在操作完成時發出訊號的事件。若要設定後台操作,請為 dowork 事件新增乙個事件處理程式。在此事件處理程式中呼叫耗時的操作。若要啟動該操作,請呼叫 runworkerasync。若要收到進度更新通知,請對 progresschanged 事件進行處理。若要在操作完成時收到通知,請對 runworkercompleted 事件進行處理。

***執行緒間操作無效: 從不是建立控制項「richtextbox1」的執行緒訪問它

原因:用到了多執行緒,只能從建立控制項的執行緒來更新控制項

解決辦法:

方法一

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

多執行緒(一) tomcat 多執行緒

web server允許的最大執行緒連線數還受制於作業系統的核心引數設定,通常windows是2000個左右,linux是1000個左右。1.編輯tomcat安裝目錄下的conf目錄下的server.xml檔案 maxthreads 150 表示最多同時處理150個連線,tomcat使用執行緒來處理...

多執行緒 理解多執行緒(一)

程序 程序是cpu分配資源的基本單位 執行緒 執行緒是cpu排程的基本單位 資源分配給程序,所有執行緒共享該程序的資源 當執行緒數大於cpu的數量,會出現時間片的輪詢。cpu時間片是直接分配給執行緒的,執行緒拿到cpu時間片就能執行了 cpu時間片不是先分給程序然後再由程序分給程序下的執行緒的。所有...