The version of the Shell function included in VB.NET expands on the original version and supports an additional argument that enables you to specify whether to wait until the shelled program terminates, with an optional timeout. This solves an old problem known to many Visual Basic developers without your having to resort to Windows API functions:
' Run Notepad.exe and wait until the user terminates it.
Shell("notepad", AppWinStyle.NormalFocus, True)
' Run Notepad, then wait max 10 seconds.
Dim taskID As Long
taskId = Shell("notepad", AppWinStyle.NormalFocus, True, 10000)
If taskID = 0 Then
Console.WriteLine("Notepad has been closed within 10 seconds.")
Console.WriteLine("Notepad is still running after 10 seconds.")