Process.Exited イベント
アセンブリ: System (system.dll 内)

public: event EventHandler^ Exited { void add (EventHandler^ value); void remove (EventHandler^ value); }
/** @event */ public void add_Exited (EventHandler value) /** @event */ public void remove_Exited (EventHandler value)

Exited イベントは、関連付けられたプロセスが終了したことを示します。このイベントの発生は、プロセスが強制終了された (中止された) か、正常終了したことを示します。
関連付けられたプロセスが終了したときの通知方法には、同期と非同期の 2 つの方法があります。同期通知は、関連付けられたコンポーネントが終了するまでアプリケーションの処理を一時中断する WaitForExit メソッド呼び出しに依存します。非同期通知は、Exited イベントに依存します。どちらの場合も、プロセスが終了したという通知を Process コンポーネントが受け取ることができるように、EnableRaisingEvents を true に設定する必要があります。
オペレーティング システムがプロセスをシャットダウンすると、終了を待機していたプロセス コンポーネントに通知されます。コンポーネントは、プロセスを識別していたハンドルを使用して、オペレーティング システム メモリに常駐している関連付けられたプロセスの情報 (ExitTime プロパティなど) にアクセスできます。
関連付けられているプロセスが終了したため、コンポーネントの Handle プロパティが指すプロセス リソースは存在しません。代わりに、その用途はプロセス リソースに関するオペレーティング システムの情報にアクセスするだけになります。システムは、Process コンポーネントで解放されていない終了したプロセスを識別するハンドルがあることを認識します。そのため、Process コンポーネントが特にリソースを解放するまで、ExitTime プロパティと Handle プロパティの情報をメモリに保持します。
![]() |
---|
終了したプロセスを識別するハンドルがあっても、Start をもう一度呼び出して同じプロセスに再接続することはできません。Start を呼び出すと、自動的に関連付けられたプロセスは解放され、同じファイルのプロセスに接続されますが、これは完全に新しい Handle です。 |

ファイルを出力するプロセスを作成するコード例を次に示します。プロセスが作成されたときに EnableRaisingEvents が設定されているので、プロセスが終了すると Exited イベントが発生します。Exited イベント ハンドラは、プロセス情報を表示します。
Imports System Imports System.Diagnostics Imports System.ComponentModel Imports System.Threading Imports Microsoft.VisualBasic Class PrintProcessClass Private WithEvents myProcess As New Process Private elapsedTime As Integer Private eventHandled As Boolean ' Print a file with any known extension. Sub PrintDoc(ByVal fileName As String) elapsedTime = 0 eventHandled = False Try ' Start a process to print a file and raise an event when done. myProcess.StartInfo.FileName = fileName myProcess.StartInfo.Verb = "Print" myProcess.StartInfo.CreateNoWindow = True myProcess.EnableRaisingEvents = True myProcess.Start() Catch ex As Exception Console.WriteLine("An error occurred trying to print ""{0}"":" & _ vbCrLf & ex.Message, fileName) Return End Try ' Wait for Exited event, but not more than 30 seconds. Const SLEEP_AMOUNT As Integer = 100 Do While Not eventHandled elapsedTime += SLEEP_AMOUNT If elapsedTime > 30000 Then Exit Do End If Thread.Sleep(SLEEP_AMOUNT) Loop End Sub ' Handle Exited event and display process information. Private Sub myProcess_Exited(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles myProcess.Exited eventHandled = True Console.WriteLine("Exit time: {0}" & vbCrLf & _ "Exit code: {1}" & vbCrLf & "Elapsed time: {2}", _ myProcess.ExitTime, myProcess.ExitCode, elapsedTime) End Sub Shared Sub Main(ByVal args() As String) ' Verify that an argument has been entered. If args.Length <= 0 Then Console.WriteLine("Enter a file name.") Return End If ' Create the process and print the document. Dim myProcess As New PrintProcessClass myProcess.PrintDoc(args(0)) End Sub End Class


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からProcess.Exited イベントを検索する場合は、下記のリンクをクリックしてください。

- Process.Exited イベントのページへのリンク