c多執行緒操作控制元件問題,C 多執行緒操作控制元件問題

2021-12-23 11:56:15 字數 710 閱讀 2559

1樓:匿名使用者

一樓的答案不僅不是正解,而且還會報錯!

正確的做法如下:

thread th = new thread(new threadstart(() =>

));}

}));

th.isbackground = true;//一定要標記為後臺執行緒,這樣這個執行緒才能在你的主執行緒停止後自動停止

th.start();

總之一句話,繁瑣的業務操作放在非主執行緒裡面去執行,或者用backgroundworker去執行,當需要操作介面元素時用invoke,但是在invoke裡面不能有繁瑣的業務操作

2樓:匿名使用者

invoke 會阻塞主執行緒(即ui執行緒)

呼叫invoke 直到執行完畢 才返回ui執行緒繼續執行

如果不需要等待 請用begininvoke (非同步執行)

3樓:匿名使用者

一樓正解 你是寫在guidproc這個類裡面的,這個是不行的.必須寫在form的類中這是執行緒安全的問題啊,c#中預設不允許在控制元件的非建立執行緒中設定控制元件的值。,

4樓:匿名使用者

我是用多執行緒控制的,其實你也可以用定時器來做,一個效果。

public partial class form2 : form

public void changename()}}

c多執行緒方法控制兩個進度條,C 多執行緒方法 控制兩個進度條

最重要的是要實現非同步。其實就是你的 邏輯與介面呈現,非同步來做。互不干涉。用多執行緒吧。開條執行緒,執行你的 沒執行一次,就觸發個事件。介面就訂閱這個事件。每收到一次事件就更新一下進度條。非同步的處理。如果是 winform 那就 this.begininvoke 如果是 wpf,就 this.d...

關於多執行緒對mysql資料庫插入操作的疑問

資料庫有自己的連線鎖機制,如果是針對同一臺機器使用同一個介面進行插入的話多執行緒和單執行緒是一樣的。除非你有好幾臺資料庫伺服器,這樣再使用多執行緒來進行上面的工作的話效率才會明顯提高。j a多執行緒同時插入mysql中的一張表,是否可行?資料庫有自己的連線鎖機制,如果是針對同一臺機器使用同一個介面進...

多執行緒問題 為什麼無法呼叫Thread類的start方法

我來幫你解決把。雖然我不明白你為什麼說無法呼叫thread類的start方法。首先,你要理解多執行緒實現的2種方法。1.繼承thread類並覆寫run方法 2.實現runnable介面並覆寫run方法。其中這兩種方法中在實際開發和應用中只有第二種是規範和常見的 原因是thread類也是實現了runn...