Here is an example. Don’t wait for actions, the method is called when the process is complete.
oShell = New Shell
oShell.ExecuteMode = Shell.ExecuteModes.Asynchronous
AddHandler oShell.Completed, AddressOf ShellCompleted
Sub ShellCompleted(oShell as Shell)
// Do your event based stuff here. the passed shell provides a reference to the shell.
End Sub
I had to dig it out of GIT as I removed it as the new Zip and Unzip removed my need to employ a shell.