Minying's Blog

Just another WordPress.com weblog

Process 類別 結束執行的應用程式

Posted by minying 於 23 四月, 2009

Process 類別可以用來處理程序,對於結束處理程序有幾個處理步驟,查詢及測試結果,記錄下其中的差異。

CloseMainWindow( ),Close( ) 及 Kill( ) 三種方式。

CloseMainWindow( ) : 關閉有使用者介面的處理序,方法是傳送關閉訊息至其主視窗。

Close( ) : 釋放與這個元件相關的所有資源。

Kill( ) : 立即停止相關的處理序。

CloseMainWindow( ) ,會向主視窗發出關閉請求,並不會強制應用程式退出,它的行為與用戶使用系統功能表關閉應用程式主視窗的行為一樣,因此,通過關閉主視窗發出的退出進程的請求不強制應用程式立即退出。所以基本上CloseMainWindow( ) 是針對有主視窗的程序要結束時才需要使用。因有可能有回應訊息,需使用者回應,所以不一定可以順利關閉程序。即使視窗關閉了,仍有可能沒有釋放相關的所有資源,所以一般會和 Close( ) 方法一起使用。應用程式可以在結束前要求使用者確認,也可以拒絕結束。若要強制應用程式結束,請使用 Kill 方法。

Close( ) ,是針對沒有主視窗的程序使用,並釋放與這個元件相關的所有資源。

Kill( ),會強制終止處理序,如果您呼叫 Kill,可能會失去處理序編輯的資料或配置給處理序的資源。Kill 會造成處理序異常終止,應該只在必要時使用CloseMainWindow 會逐步終止處理序並關閉所有視窗,所以比較適用於有介面的應用程式。如果 CloseMainWindow 失敗,可以用 Kill 終止處理序。Kill 是終止沒有圖形介面的處理序的唯一方法。

先進行關閉程序的視窗,再判斷是否還存在,若是則進行 Kill 的方法。 

       myProcess.CloseMainWindow()
        If Not myProcess.HasExited Then
            myProcess.Kill()
        End If

或是先判別程序是否有反應

        If myProcess.Responding = False Then
            myProcess.Kill()
        End If

發表留言