Process.EnableRaisingEvents 属性

获取或设置在进程终止时是否应激发 Exited 事件。

**命名空间:**System.Diagnostics
**程序集:**System(在 system.dll 中)

语法

声明
Public Property EnableRaisingEvents As Boolean
用法
Dim instance As Process
Dim value As Boolean

value = instance.EnableRaisingEvents

instance.EnableRaisingEvents = value
public bool EnableRaisingEvents { get; set; }
public:
property bool EnableRaisingEvents {
    bool get ();
    void set (bool 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)。如果某个组件启动该进程,则该组件可访问关联进程的管理信息,操作系统仍存储这些信息。此类信息包括 ExitTimeExitCode

关联的进程退出后,组件的 Handle 不再指向现有进程资源。相反,它仅可用于访问有关进程资源的操作系统信息。操作系统知道 Process 组件尚未释放已退出进程的若干句柄,所以它在内存中保存 ExitTimeHandle 信息。

监视进程的退出是有成本的。如果 EnableRaisingEventstrue,则关联进程终止时将激发 Exited 事件。此时,您为 Exited 事件指定的过程将运行。

有时,应用程序启动了一个进程,但不需要将进程的关闭通知给应用程序。例如,应用程序可启动“记事本”,以便用户执行文本编辑,但不必将“记事本”应用程序另作它用。可以选择在进程退出时不通知,因为该进程与应用程序的继续运行不相关。将 EnableRaisingEvents 设置为 false 可节省系统资源。

示例

下面的代码示例创建打印文件的进程。对 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

.NET Framework 安全性

平台

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 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0

请参见

参考

Process 类
Process 成员
System.Diagnostics 命名空间
WaitForExit
Exited
CloseMainWindow
Kill
Handle
ExitTime
HasExited