C 2005後不再支援多執行緒直接訪問介面的控制項

2021-04-19 20:58:38 字數 692 閱讀 8566

c#2005後不再支援多執行緒直接訪問介面的控制項(介面建立執行緒與訪問執行緒不是同乙個執行緒),不過可以使用delegate來解決:

1. 宣告乙個delegate和定義乙個delegate的實現函式

2. 定義執行緒函式(在另乙個執行緒中可以對介面控制項進讀操作)

private void progressstart()

trace.writeline(string.format("pos: ", newpos));

// 這裡直接呼叫方法,由其內部自動判斷是否啟用delegate

showprogress(newpos);

thread.sleep(100);}}

3. 執行緒的啟動和終止

private thread _progressthread;

_progressthread = new thread(new threadstart(progressstart));

// 可選,功用:即使該執行緒不結束,程序也可以結束

_progressthread.isbackground = true;

_progressthread.start();

_progressthread.abort();

// 可選,功用:等到執行緒結束才繼續

_progressthread.join();

_progressthread = null;

C 2005 多執行緒中呼叫窗體控制項

第一種方法 這種方法我沒用過,因為大家推薦不要使用,所以我沒去實驗過,具體方法如下 摘自網上 設定system.windows.forms.control.checkforillegalcrossthreadcalls false winform.下 如果在你的程式初始化的時候設定了這個屬性,而且在...

C 支援多執行緒

c 支援多執行緒並行執行程式 1.乙個程式由乙個單執行緒開始,該單執行緒由clr和作業系統建立而成,並具有多執行緒建立額外執行緒的功能.2.建立執行緒的方法 2.1通過thread類來建立執行緒.threadstart委託建立執行緒 threadstart ts new threadstart ru...

c 11的多執行緒支援一(執行緒啟動)

支援多執行緒程式設計,是c 11的乙個新特性。在語言層面編寫多執行緒程式,程式的可移植性得到很大提高。新的執行緒庫通過std thread管理執行緒的執行,啟動執行緒的方式有兩種 1 以乙個函式位址為引數,例項化乙個std thread物件 2 通過乙個類的例項構造乙個std thread物件,用於...