Process.EnableRaisingEvents プロパティ
アセンブリ: System (system.dll 内)

Dim instance As Process Dim value As Boolean value = instance.EnableRaisingEvents instance.EnableRaisingEvents = value
/** @property */ public boolean get_EnableRaisingEvents () /** @property */ public void set_EnableRaisingEvents (boolean value)
public function get EnableRaisingEvents () : boolean public function set EnableRaisingEvents (value : boolean)
正常終了または Kill の呼び出しによって関連付けられたプロセスが終了したときに Exited イベントを発生させる場合は true。それ以外の場合は false。既定値は false です。

EnableRaisingEvents プロパティは、オペレーティング システムがプロセスをシャットダウンしたときにコンポーネントに通知するかどうかを示します。EnableRaisingEvents プロパティは、非同期処理で使用し、プロセスが終了したことをアプリケーションに通知します。アプリケーションが終了イベントを同期的に待つ (終了イベントが発生するまでアプリケーションの処理を中断する) ようにするには、WaitForExit メソッドを使用します。
![]() |
---|
Visual Studio を使用している場合は、プロジェクトの Process コンポーネントをダブルクリックすると、Exited イベント デリゲートとイベント ハンドラが自動的に生成されます。追加のコードによって、EnableRaisingEvents プロパティが false に設定されます。関連付けられたプロセスが終了したときにイベント ハンドラを実行するには、このプロパティを true に変更する必要があります。 |
コンポーネントの EnableRaisingEvents 値が true の場合は、オペレーティング システムでシャットダウンされた後、関連付けられたプロセスが終了したときに、正常終了か異常終了かにかかわらず、オペレーティング システムはプロセスが関連付けられている各プロセス コンポーネントに通知します。コンポーネントがプロセスを起動した場合、コンポーネントは関連付けられたプロセスの管理情報にアクセスできます。この情報は、終了後もオペレーティング システムによって格納されています。これらの情報には、ExitTime、ExitCode などがあります。
関連付けられているプロセスが終了した後は、コンポーネントの Handle は実在するプロセス リソースを指さなくなります。代わりに、その用途はプロセス リソースに関するオペレーティング システムの情報にアクセスするだけになります。オペレーティング システムは、Process コンポーネントで解放されていない終了したプロセスを識別するハンドルがあることを認識します。そのため、ExitTime と Handle の情報をメモリに保持します。
プロセス終了の監視に関連付けられているコストがあります。EnableRaisingEvents が true の場合は、関連付けられたプロセスが終了したときに Exited イベントが発生します。このとき、Exited イベントに対して指定したプロシージャが実行されます。
アプリケーションがプロセスを起動しても、終了通知を受ける必要がない場合があります。たとえば、アプリケーションでメモ帳を起動してテキストを編集したものの、その後はメモ帳を使用しない場合です。アプリケーションの操作の継続に関係がないため、プロセスが終了しても通知しないように選択できます。EnableRaisingEvents を false に設定すると、システム リソースを節約できます。

ファイルを出力するプロセスを作成するコード例を次に示します。プロセスが終了するときに Exited イベントが発生するように EnableRaisingEvents プロパティを設定します。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.EnableRaisingEvents プロパティを検索する場合は、下記のリンクをクリックしてください。

- Process.EnableRaisingEvents プロパティのページへのリンク