Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: VB7
Expertise: Intermediate
Jul 13, 2002

Wait for a process to terminate

You can use the VB.NET Shell command (in the Microsoft.VisualBasic namespace) to run an external process and wait for its termination, but you can get better control if you work directly with the Process class in the System.Diagnostics namespace. You can start a process with the Start static method (which returns a Process object), and then wait until the process exits by querying the WaitForExit instance method, which takes an optional timeout in milliseconds and returns True if the process has exited:

' run Word and wait until it exits
Dim appexe As String = "C:\Program Files\Microsoft Office\Office\Winword.exe"
' you can pass arguments to the process, if you need to
Dim wordProc As Process = Process.Start(appexe, "")

' wait until Word exits, but display a message every second
Do Until wordProc.WaitForExit(1000)
     Console.WriteLine("Waiting for Word to exit")
Loop
You can also check whether another process is still running by querying the HasExited readonly boolean property.

There is also another method to get a notification when a process exits. You must set a handler for the Exited event and enable event raising by setting the EnableRaisingEvent property to True:


Dim exited As Boolean

Sub Main()
    Dim appexe As String = _
        "C:\Program Files\Microsoft Office\Office\Winword.exe"
    Dim wordProc As Process = Process.Start(appexe, "")
    AddHandler wordProc.Exited, AddressOf Process_Exited
    wordProc.EnableRaisingEvents = True

    ' do something else here
    ' (in this example just a loop that waits until the process exits
    Do
        Threading.Thread.Sleep(100)
    Loop Until exited
    RemoveHandler wordProc.Exited, AddressOf Process_Exited
End Sub

Private Sub Process_Exited(ByVal sender As Object, ByVal e As EventArgs)
    Console.WriteLine("Word has exited")
    exited = True
End Sub
Francesco Balena
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date