C 中Invoke的用法

2021-06-03 03:20:56 字數 820 閱讀 7620

在多執行緒程式設計中,我們經常要在工作執行緒中去更新介面顯示,而在多執行緒中直接呼叫介面控制項的方法是錯誤的做法,invoke 和 begininvoke 就是為了解決這個問題而出現的,使你在多執行緒中安全的更新介面顯示。

正確的做法是將工作執行緒中涉及更新介面的**封裝為乙個方法,通過 invoke 或者 begininvoke 去呼叫,兩者的區別就是乙個導致工作執行緒等待,而另外乙個則不會。

而所謂的「一面響應操作,一面新增節點」永遠只能是相對的,使 ui 執行緒的負擔不至於太大而已,因為介面的正確更新始終要通過 ui 執行緒去做,我們要做的事情是在工作執行緒中包攬大部分的運算,而將對純粹的介面更新放到 ui 執行緒中去做,這樣也就達到了減輕 ui 執行緒負擔的目的了。

using system.threading;

//啟動乙個執行緒

thread thread=new thread(new threadstart(dowork));

thread.start();

//執行緒方法

private void dowork()

如果你像上面操作,在vs2005或2008裡是會有異常的...

正確的做法是用invoke\begininvoke

using system.threading;

namespace test

public void dowork());}

public void updateform(string param1,string parm2)

private void button1_click(object sender, eventargs e)}}

注意**的使用!

C 中Invoke的用法

在用.net framework框架的winform構建gui程式介面時,如果要在控制項的事件響應函式中改變控制項的狀態,例如 某個按鈕上的文字原先叫 開啟 單擊之後按鈕上的文字顯示 關閉 初學者往往會想當然地這麼寫 void buttononclick object sender,eventarg...

C 中Invoke的用法()

一直對invoke和begininvoke的使用和概念比較混亂,這兩天看了些資料,對這兩個的用法和原理有了些新的認識和理解。首先說下,invoke和begininvoke的使用有兩種情況 1.control中的invoke begininvoke。2.delegrate中的invoke begini...

C 中Invoke的用法()

一直對invoke和begininvoke的使用和概念比較混亂,這兩天看了些資料,對這兩個的用法和原理有了些新的認識和理解。首先說下,invoke和begininvoke的使用有兩種情況 1.control中的invoke begininvoke。2.delegrate中的invoke begini...