在程序開發(fā)中,一個(gè)程序經(jīng)常需要去調(diào)用其他的程序,C#中Process類正好提供了這樣的功能。它提供對(duì)本地和遠(yuǎn)程進(jìn)程的訪問并使您能夠啟動(dòng)和停止本地系統(tǒng)進(jìn)程。
一、啟動(dòng)進(jìn)程實(shí)例
Process.Start 方法,啟動(dòng)(或重用)此 Process 組件的 StartInfo 屬性指定的進(jìn)程資源,并將其與該組件關(guān)聯(lián)。如果啟動(dòng)了進(jìn)程資源,則為 true;如果沒有啟動(dòng)新的進(jìn)程資源(例如,如果重用了現(xiàn)有進(jìn)程),則為 false。
Process.StartInfo 屬性,獲取或設(shè)置要傳遞給 Process 的 Start 方法的屬性。StartInfo 表示用于啟動(dòng)進(jìn)程的一組參數(shù)。 調(diào)用 Start 時(shí),StartInfo 用于指定要啟動(dòng)的進(jìn)程。 唯一必須設(shè)置的 StartInfo 成員是 FileName 屬性。
ProcessStartInfo.FileName 屬性,獲取或設(shè)置要啟動(dòng)的應(yīng)用程序或文檔。FileName 屬性不需要表示可執(zhí)行文件。 它可以是其擴(kuò)展名已經(jīng)與系統(tǒng)上安裝的應(yīng)用程序關(guān)聯(lián)的任何文件類型。
ProcessStartInfo.CreateNoWindow屬性,獲取或設(shè)置指示是否在新窗口中啟動(dòng)該進(jìn)程的值。
二、關(guān)掉啟動(dòng)進(jìn)程
Process.Kill 方法,立即停止關(guān)聯(lián)的進(jìn)程。Kill 強(qiáng)制終止進(jìn)程,Kill 方法將異步執(zhí)行。 在調(diào)用 Kill 方法后,請(qǐng)調(diào)用 WaitForExit 方法等待進(jìn)程退出,或者檢查 HasExited 屬性以確定進(jìn)程是否已經(jīng)退出。
三、進(jìn)程結(jié)束后調(diào)用其他方法
在調(diào)用某個(gè)進(jìn)程結(jié)束后,我們通常需要執(zhí)行其他的方法,比如,在做安裝程序時(shí),需要先判斷.Net Framework環(huán)境是否安裝,若未安裝,則先調(diào)用.NET Framework安裝程序后,繼續(xù)運(yùn)行安裝程序方法。
通常這種情況下,有兩種方法:
方法一:WaitForExit()方法。這種方法會(huì)阻塞當(dāng)前進(jìn)程,直到運(yùn)行的外部程序退出。
上述代碼在Notepad.exe記事本結(jié)束之后,彈出對(duì)話框。
方法二:Exited 事件。為外部進(jìn)程添加一個(gè)事件監(jiān)視器,當(dāng)退出后,獲取通知,這種方法時(shí)不會(huì)阻塞當(dāng)前進(jìn)程,你可以處理其它事情。
對(duì)于在C#程序開發(fā)中調(diào)用外部程序的操作,要判斷這個(gè)被調(diào)用的EXE文件是否執(zhí)行結(jié)束其實(shí)最跟本的是 System.Diagnostics.Process類的應(yīng)用,其中有一個(gè)方法,就是WaitForExit();和HasExited屬性,這兩個(gè)也 都是為判斷外部程序exe文件的執(zhí)行狀態(tài)而設(shè)計(jì)的,HasExited=ture時(shí)表示執(zhí)行結(jié)束.
新聞熱點(diǎn)
疑難解答
圖片精選