I delegate non li ho ancora imparati. Avevo provato ad usare questo sistema ma non ero riuscito comunque a far funzionare come volevo il mio programma.
Sai come l'ho risolto alla fine? Sempre grazie a msdn.... ho scoperto questo comando:
	codice:
	Control.CheckForIllegalCrossThreadCalls = False
 
...inibisce il controllo sui thread e mi permette di scrivere il messaggio nella mia finestra.
Dicono che non e` bello usarlo perche` potrebbe comportare dei problemi ma nel mio caso lo uso in una parte di codice molto semplice per cui non dovrei avere alcuna controindicazione.
In sostanza:
	codice:
	Sub.....
 Control.CheckForIllegalCrossThreadCalls = False
 prg.StartInfo.FileName = <nome prog>
 prg.StartInfo.Arguments = <args>
 prg.StartInfo.CreateNoWindow = True
 prg.StartInfo.UseShellExecute = False
 prg.StartInfo.RedirectStandardOutput = True
 prg.StartInfo.WindowStyle = ProcessWindowStyle.Normal
 AddHandler prg.OutputDataReceived, AddressOf prg_OutputDataReceived
 prg.Start()
 prg.BeginOutputReadLine()
 prg.WaitForExit()
End Sub
Private Sub prg_OutputDataReceived(ByVal sender As System.Object, ByVal e As System.Diagnostics.DataReceivedEventArgs)
 gr_msg.AppendText(e.Data & NewLine)
End Sub
 
Funge alla grande!!