Consegui da seguinte forma:
Imports System.Threading
Public Class FormDialogoEdição
'Declaração do Delegate
Public Delegate Sub Fechar()
Public CaminhoImagem As String
Public CaminhoPrograma As String
Private td As Thread
Private proc As New Process
Private Sub FormDialogoEdição_Load(sender As Object, e As EventArgs) Handles MyBase.Load
proc.StartInfo.Arguments = CaminhoImagem
proc.StartInfo.FileName = CaminhoPrograma
proc.Start()
ProcessoNome.Text = proc.ProcessName
ProcessoInício.Text = proc.StartTime.ToLongTimeString
td = New Thread(New ThreadStart(AddressOf IniciarProcesso))
td.IsBackground = True
td.Start()
End Sub
Private Sub IniciarProcesso()
Do 'Loop realizado enquanto o processo estiver aberto
If Not proc.HasExited Then
'Atualiza as propriedades do processo
proc.Refresh()
End If
Loop While Not proc.WaitForExit(1)
If Me.InvokeRequired = True Then
'Intância do Delegado
Dim DelegateFecha As New Fechar(AddressOf Me.Dispose)
'Invoca o delegado
Me.Invoke(DelegateFecha)
Else
Me.Dispose()
End If
End Sub
End Class