多執行緒方法修改winform視窗內容的推薦方法

2021-08-18 14:09:37 字數 575 閱讀 5124

今天給專案裡寫乙個守護程式,需要開多執行緒做一些資料處理,dba說需要介面顯示當前工作狀態。

大家都知道,由於視窗多開的執行緒,跟視窗不是乙個執行緒,不能直接控制視窗,否則會導致鎖死視窗。

所以,實現這個效果需要特別處理,一般都用委託和事件實現。

雖然幾年前做過類似的效果,但**找不到了。

於是參考網上資料,用乙個新的相對簡單的方式,用到了委託,沒有用事件,實現了這個效果。

現將核心**記錄下來,以備後用:

public delegate void delegateshowmsg(string msg);

public void addmsg(string msg)

}var d = new delegateshowmsg(addmsg);//委託

this.lstmsg.invoke(d, new object );//呼叫**內部呼叫)

}else

}

這個做法,只需要按照上面**,定義個委託,並實現這樣乙個窗體操作方法,

然後把窗體物件傳給多執行緒方法裡,直接呼叫這個操作方法就行了

是不是非常簡單

WinForm 多執行緒

winform多執行緒程式設計 1.new thread 新開乙個執行緒,執行乙個方法,沒有引數傳遞 private void dowork private void dosomething 新開乙個執行緒,執行乙個方法,並傳遞引數 private void dowork private void ...

winform 多執行緒錯誤集錦

1.thread.sleep 300 到底睡的是誰,哪個執行緒?1 public void setlabelinfo object num 2 7 8else920 21 累加顯示到label 中,第一次確實是btn發起的執行緒,name start clic 程,第二次顯示的主線程,所以threa...

WinForm多執行緒程式設計簡單Demo

ps 由於報告生成非常耗費資源,使用單執行緒程式設計模式,監控資訊根本無法資訊無法及時在richtext顯示.public partial class form1 form private void createrpt cancellationtoken ct invoke方法用於獲得建立lbl s...