C WinForm 程序 執行緒

2022-06-12 20:57:08 字數 2466 閱讀 9270

程序:乙個程式就是乙個程序,也有可能乙個程式需要多個程序來支援的情況,比如qq

點選按鈕開啟記事本,靜態方法

public

partial

class

form3 : form

//點選開啟記事本

private

void button1_click(object

sender, eventargs e)

}

點選開啟記事本

引用新的命名空間:using system.diagnostics;  新的類:process;(李獻策lxc)

如何製作乙個開啟應用程式的程式?也可以例項化物件,來呼叫start()普通方法

但呼叫普通方法之前,需要給startinfo屬性設定乙個物件,來通知他要開啟哪個程序(李獻策lxc)

//選擇應用程式

private

void button1_click(object

sender, eventargs e)

}//開啟程式

private

void button2_click(object

sender, eventargs e)

}執行選定的應用程式

執行緒:乙個程序就像是乙個公司,這個公司預設只有乙個老闆,老闆叫做主線程,預設幫使用者操作窗體,或者很快的其他操作

但如果首席執行官時間的操作,比如每隔一秒列印乙個數字,此時主線程在執行迴圈,使用者是無法操作窗體的

乙個執行緒同一時間只能做一件事,程式一旦讓他去執行一段需要時間的**那麼就會出現程式假死,失去控制

原因是:執行緒同一時間只能做一件事,而主線程是操作窗體控制的一旦被占用,那麼窗體就沒有人控制了(李獻策lxc)

解決辦法:

招乙個員工幫老闆幹活

先把要執行的**提取成乙個方法,是乙個完整的流程

點選按鈕開始執行

public

form3()

//點選執行

private

void button1_click(object

sender, eventargs e)

//要執行的程式**,提取成方法

private

static

void

aaa()}}

建立執行緒

可以同時建立多個執行緒(李獻策lxc)

執行緒需要執行乙個方法,而這個方法允許有乙個引數,並且這個引數必須是object型別

public

partial

class

form3 : form

//點選執行

private

void button1_click(object

sender, eventargs e)

//要執行的程式**,提取成方法

程式預設不允許跨執行緒訪問物件,因為監控開著,需要關閉監控

建立的執行緒是無法訪問主線程的內容、控制項的,需要結構函式中改變屬性值即可(李獻策lxc)

執行緒預設開啟為前台執行緒,程式必須將所有的前台執行緒執行完畢後才會真正退出程式

解決辦法:將執行緒變為後台執行緒,主窗體一關,後台執行緒全部關閉

(李獻策lxc)

c winform中多執行緒的使用

其實我主要就打算記錄兩個點。第乙個是關於大量任務下窗體的等待效果,或者說人機互動的友好性。關於這一點,我在網上也搜了相關的資料,但是發現都寫的大同小異。所以本文以乙個例子為基礎,整理出乙個彈框進度條提示的效果案例。同時我個人覺得這個案例的擴充套件和 簡潔性相對較好。廢話不多說,直接擼 如下圖所示的,...

C WinForm跨執行緒修改UI介面

在我做winform開發的過程中,經常會遇到耗時操作或阻塞操作。他們會引發軟體的卡頓甚至假死,嚴重影響軟體的使用。因此,這類耗時或阻塞的操作一般都會使用非同步的方式去執行,不影響主線程 ui執行緒 與使用者間的互動。但多個執行緒競爭讀寫同乙個資源往往會造成意想不到的意外結果,ui介面也是一種資源,所...

C winform中UI執行緒與工作執行緒的互動

c winform中ui執行緒與工作執行緒的互動 1.使用多執行緒 void calcpi int digits void calcbutton click object sender,eventargs e void calcpithreadstart object digits 2.在ui執行緒...