程序:
//程序用到的類process,需要進行解析 using system.diagnostics
process.start("calc");//process是非靜態方法,括號裡面是要開啟的程序的名字
(靜態方法與非靜態方法區別:靜態方法不用例項化物件,直接可以點出裡面的方法)
弊端:有許多程式不知道它的執行名字到底是什麼,如果寫錯了,就會出現程式崩潰錯誤
乙個比較好用的開啟程序的辦法:
//例項化程序類
process p = new
process();
//建立程序開啟路徑物件
processstartinfo psi = new
processstartinfo(textbox1.text);
//程序類開啟路徑指向
p.startinfo =psi;
//啟動程序,不是立刻開啟,什麼時候開啟時由cpu決定
p.start();
程式為什麼會假死?因為主線程被占用了
執行緒去執行一段需要時間的**,主線程不會被占用,程式就不會出現假死狀態了
建立執行緒的方法:
//建立執行緒類,並使用委託,指定這個執行緒要執行的是哪個函式
thread th = new
thread(aaa);
//開啟執行緒執行功能,也不是立刻執行
th.start();
在運用執行緒的過程中遇到的兩個常見問題及其解決辦法如下:
問題一:
執行緒可以開啟很多個,如果使用者可以無限點選按鈕,那麼有可能會造成電腦cpu使用率過高
用執行緒執行方法,只能傳乙個引數,並且此引數必須是object型別
程式預設不允許跨執行緒訪問物件
關閉監控就可以了
怎麼關?
在建構函式中,例項化方法下面加上這句話:
control.checkforillegalcrossthreadcalls = false;
問題二:
預設主窗體已經關閉,但是執行緒如果還未執行完工作內容,那麼會默默的繼續執行,直到執行完畢後才會將整個程序關閉
程式預設所有的執行緒都為:前台執行緒
解決辦法:將新開的執行緒變為後台執行緒
th.isbackground = true;
總結:執行緒所在的命名空間:system.threading;
執行緒類:thread th = new thread(方法名);
//沒有不要引數的建構函式,常用的為,1個引數,引數型別是委託型別,需要乙個方法指向,變為後台執行緒:
th.isbackground = true;
執行緒啟動:
th.start();
如果要執行帶引數的方法,那麼這個方法的引數必須是object型別,引數傳遞的位置在start方法的括號中
允許跨執行緒訪問物件:
在建構函式的構造方法下面加上:
control.checkforillegalcrossthreadcalls = false;
停止執行緒:
th.abort();
WinForm 程序和執行緒
一 程序 程序是乙個具有獨立功能的程式關於某個資料集合的一次執行活動。它可以申請和擁有系統資源,是乙個動態的概念,是乙個活動的實體。process 類,用來操作程序。命名空間 using system.diagnostics process.start calc 開啟計算器 process.star...
winform(程序和執行緒)
一 程序 需要有用process類 用法一 process.start calc 不好用 該方法弊端 有許多程式不知道它的執行名字到底是什麼,如果寫錯了,就會出現程式崩潰錯誤 用法二 例項化程序類 process p new process 建立程序開啟路徑物件 processstartinfo p...
WinForm 程序,執行緒
一 程序 程序是乙個具有獨立功能的程式關於某個資料集合的一次執行活動。它可以申請和擁有系統資源,是乙個動態的概念,是乙個活動的實體。process 類,用來操作程序。命名空間 using system.diagnostics process.start calc 開啟計算器 process.star...