The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Process.WaitForExit Method (Int32)

Instructs the Process component to wait the specified number of milliseconds for the associated process to exit.

Namespace:  System.Diagnostics
Assembly:  System (in System.dll)

public bool WaitForExit(
	int milliseconds


Type: System.Int32
The amount of time, in milliseconds, to wait for the associated process to exit. The maximum is the largest possible value of a 32-bit integer, which represents infinity to the operating system.

Return Value

Type: System.Boolean
true if the associated process has exited; otherwise, false.


The wait setting could not be accessed.


No process Id has been set, and a Handle from which the Id property can be determined does not exist.


There is no process associated with this Process object.


You are attempting to call WaitForExit(Int32) for a process that is running on a remote computer. This method is available only for processes that are running on the local computer.

The WaitForExit(Int32) overload is used to make the current thread wait until the associated process terminates. This overload instructs the Process component to wait a finite amount of time for the process to exit. If the associated process does not exit by the end of the interval because the request to terminate is denied, false is returned to the calling procedure. You can specify a negative number (Infinite) for milliseconds, and Process.WaitForExit(Int32) will behave the same as the WaitForExit overload. If you pass 0 (zero) to the method, it returns true only if the process has already exited; otherwise, it immediately returns false.


In the .NET Framework version 3.5 and earlier versions, if milliseconds was -1, the WaitForExit(Int32) overload waited for MaxValue milliseconds (approximately 24 days), not indefinitely.

When standard output has been redirected to asynchronous event handlers, it is possible that output processing will not have completed when this method returns. To ensure that asynchronous event handling has been completed, call the WaitForExit() overload that takes no parameter after receiving a true from this overload. To help ensure that the Exited event is handled correctly in Windows Forms applications, set the SynchronizingObject property.

When an associated process exits (is shut down by the operating system through a normal or abnormal termination), the system stores administrative information about the process and returns to the component that had called WaitForExit(Int32). The Process component can then access the information, which includes the ExitTime, by using the Handle to the exited process.

Because the associated process has exited, the Handle property of the component no longer points to an existing process resource. Instead, the handle can be used only to access the operating system's information about the process resource. The system is aware of handles to exited processes that have not been released by Process components, so it keeps the ExitTime and Handle information in memory until the Process component specifically frees the resources. For this reason, any time you call Start for a Process instance, call Close when the associated process has terminated and you no longer need any administrative information about it. Close frees the memory allocated to the exited process.

For an example of how to use the WaitForExit method, see the code example for the ExitCode property.

.NET Framework

Supported in: 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

  • LinkDemand 

    for full trust for the immediate caller. This member cannot be used by partially trusted code.

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Community Additions