如何在子執行緒中操作窗體上的控制項 (來自 愚翁專欄)

2021-04-07 06:40:15 字數 756 閱讀 3703

dxc

一般來說,直接在子執行緒中對窗體上的控制項操作是會出現異常,這是由於子執行緒和執行窗體的執行緒是不同的空間,因此想要在子執行緒來操作窗體上的控制項,是不可能簡單的通過控制項物件名來操作,但不是說不能進行操作,微軟提供了

invoke

的方法,其作用就是讓子執行緒告訴窗體執行緒來完成相應的控制項操作。

現在用乙個用執行緒控制的程序條來說明,大致的步驟如下:

1.建立

invoke

函式,大致如下:

//////

delegate function to be invoked by main thread

///

private

void invokefun()

2.子執行緒入口函式:

//////

thread function inte***ce

///

private

void threadfun()

}

3.

建立子執行緒:

thread thdprocess = new thread( new threadstart( threadfun ) );

thdprocess.start();

備註:using

system.threading;

private

system.windows.forms.progressbar prgbar;

執行後的效果如下圖所示:

如何在子執行緒中操作窗體上的控制項

一般來說,直接在子執行緒中對窗體上的控制項操作是會出現異常,這是由於子執行緒和執行窗體的執行緒是不同的空間,因此想要在子執行緒來操作窗體上的控制項,是不可能簡單的通過控制項物件名來操作,但不是說不能進行操作,微軟提供了 invoke 的方法,其作用就是讓子執行緒告訴窗體執行緒來完成相應的控制項操作。...

如何在子窗體中操作主窗體上的控制項

很多人都苦惱於如何在子窗體中操作主窗體上的控制項,或者在主窗體中操作子窗體上的控制項。相比較而言,後面稍微簡單一些,只要在主窗體中建立子窗體的時候,保留所建立子窗體物件即可。下面重點介紹前一種,目前常見的有兩種方法,基本上大同小異 第一種,在主窗體類中定義乙個靜態成員,來儲存當前主窗體物件,例如 p...

如何跨越執行緒呼叫窗體上的控制項

ui 的響應速度 使得一切執行顯得更為快速。在 windows 中進行多執行緒程式設計曾經是 c 開發人員的專屬特權,但是現在,可以使用所有相容 microsoft net 的語言來編寫。不過 windows 窗體體系結構對執行緒使用制定了嚴格的規則。如果只是編寫單執行緒應用程式,則沒必要知道這些規...