進程
進程是對一段靜態(tài)指令序列(程序)的動態(tài)執(zhí)行過程竿痰。
與進程相關(guān)的信息包括:進程標示(進程ID)脆粥、文件名、執(zhí)行的程序和數(shù)據(jù)影涉,運行時間变隔、在存儲器中的位置、占用的內(nèi)存容量等蟹倾。
在NET Framewrok 中Process 類提供了對進程進行管理的各種方法
線程
將一個進程劃分為若干個獨立的執(zhí)行流匣缘,每一個執(zhí)行流均稱為一個線程。
(1)線程是CPU調(diào)度和分配的基本單位鲜棠。
(2)每個進程都有一個主線程肌厨。
(3)除了主線程以外,還可以給一個進程分配若干個子線程豁陆,從而達到多個任務(wù)并行執(zhí)行的目的柑爸。
任何一個C#程序都有一個默認的線程,該線程成為主線程盒音。主線程執(zhí)行程序中Main方法中的代碼表鳍。Main方法中的每一條語句都由主線程執(zhí)行,當Main返回時里逆,主線程也自動終止进胯。
進程管理(Process類)
- Process類位于System.Diagnostics命名空間下。
- 對本機(也叫本地計算機)
(1)可以啟動原押、終止某個進程
(2)可以查看進程相關(guān)信息,如CPU利用率等
(3)可以查看進程工作狀態(tài) - 對遠程計算機
(1)可以查看遠程計算機相關(guān)信息
(2)無法直接啟動偎血、終止遠程計算機 - 在一個程序中處理其他的程序(例如調(diào)用其他.exe文件诸衔、 快捷方式等),實際上就是對進程進行管理颇玷。
Process類提供的靜態(tài)方法
Process類常用的屬性和方法
-----------------------獲取進程實例-------------------
GetProcessById方法(靜態(tài)方法):通過進程Id創(chuàng)建新的Process組件笨农,并將其與本地計算機上的進程資源關(guān)聯(lián)。GetProcessById最多只有一個Process實例帖渠。
GetProcesses方法(靜態(tài)方法):獲取本機所有進程
GetProcessesByName方法(靜態(tài)方法):獲取本機上特定名稱的進程
-----------------------獲取及設(shè)置優(yōu)先級---------------
BasePriority屬性: 獲取進程優(yōu)先級(只讀)
PriorityClass 屬性:設(shè)置或更改進程優(yōu)先級
---------------------------進程ID及進程名-----------------------
Id屬性:獲取關(guān)聯(lián)進程的唯一標識符
ProcessName屬性:獲取該進程的名稱谒亦,不包括路徑和擴展名
---------------------------進程其他信息-------------------------
MachineName屬性:獲取關(guān)聯(lián)進程正在其上運行的計算機名稱
MainModule屬性:獲取關(guān)聯(lián)進程的主模塊
Modules屬性:獲取由關(guān)聯(lián)進程加載的模塊
TotalProcessorTime屬性:獲取進程的總的處理器時間
StartTime屬性:獲取關(guān)聯(lián)進程的啟動時間
WorkingSet64屬性:為進程分配的物理內(nèi)存量(字節(jié)數(shù))
-----------------------進程啟動-------------------------
Start方法:啟動進程資源并將其與Process組件關(guān)聯(lián)
StartInfo屬性:獲取或設(shè)置要傳遞給啟動進程的文件名以及啟動參數(shù)
-----------------------進程終止-------------------------
Kill方法:強制終止進程
CloseMainWindow方法:關(guān)閉具有用戶界面的進程
Close方法:釋放與此組件關(guān)聯(lián)的所有資源
HasExited屬性:指示關(guān)聯(lián)進程是否已終止
WaitForExit方法:設(shè)置等待關(guān)聯(lián)進程退出的時間,并在該段時間結(jié)束前或該進程退出前空郊,阻止當前線程執(zhí)行份招。