c winform中多執行緒的使用

2021-10-01 16:56:04 字數 1141 閱讀 9247

其實我主要就打算記錄兩個點

第乙個是關於大量任務下窗體的等待效果,或者說人機互動的友好性。關於這一點,我在網上也搜了相關的資料,但是發現都寫的大同小異。所以本文以乙個例子為基礎,整理出乙個彈框進度條提示的效果案例。同時我個人覺得這個案例的擴充套件和**簡潔性相對較好。

廢話不多說,直接擼**。

如下圖所示的,是乙個「主」窗體。這個窗體中定義了**、進度條窗體例項等內容,當然也有執行任務的按鈕事件。

幾點說明。如圖中箭頭1部分,原案例中是單獨定義了乙個方法(箭頭4部分)作為**的引數,但是其實這個方法只是實現了進度條視窗的例項化及顯示,所以我覺得用匿名方法就可以了。箭頭2部分,這裡其實就是業務邏輯的實現地方,只不過現在用了thread.sleep(100)代替了。箭頭3部分,主要是給進度條傳遞當前進度,並且傳遞需要的提示資訊。

下圖是具體的進度條窗體中的**,非常的簡單,可以直接ctrl+cctrl+v的。當然返回的結果可根據業務需要進行調整。

效果如下

第二個是關於在多執行緒中對主線程式控制件進行操作的問題。

winform中的多執行緒使用,乙個不小心就會遇到「執行緒間操作無效: 從不是建立控制項的執行緒訪問它」這樣的提示。我想大家都是有體會的。

傳統方式是定義乙個**,然後寫方法處理,而且這個方法裡還要做判斷。相對來說,**還是比較多的,主要是寫的地方多(這是得有多大的強迫症啊~)。這種寫法度娘上一搜一大片,這裡就不多說了。我想介紹的如下圖所示的「最簡單寫法」。如果有多個地方使用就單放乙個方法裡面呼叫,如果只有乙個地方,直接寫就行。

當然了,多執行緒的知識絕不只是這麼一點,我只是記錄了一些典型的,我會忘記的點而已。

C winform 多執行緒中建立等待窗體

1.首先建立乙個winform窗體,可講窗體的formborderstyle屬性設定為 none 將窗體的標題欄去掉。窗體中可放乙個picturebox控制項和兩個label控制項。其中picturebox控制項存放載入等待的。乙個label控制項可放置text文字。winform 如下 using...

C winform 多執行緒中建立等待窗體

1.首先建立乙個winform窗體,可講窗體的formborderstyle屬性設定為 none 將窗體的標題欄去掉。窗體中可放乙個picturebox控制項和兩個label控制項。其中picturebox控制項存放載入等待的。乙個label控制項可放置text文字。winform 如下 using...

C winform程式設計中多執行緒操作控制項方法

1 private void form1 load object sender,eventargs e 27 8 9 定義乙個 10 11private delegate void crossthreadoperationcontrol 1213 private void backgroundpro...