ho un semplice file .bat (C:\dir.bat) che ha solo questa riga di codice:

dir %1



una semplice applicazione console tenta di eseguire questo .bat con questo codice
codice:
Sub Main()
	Using p As New Process()
		With p.StartInfo
			.RedirectStandardOutput = True
			.UseShellExecute = False
			.FileName = "C:\dir.bat"
			.Arguments = """" & "D:\Documenti\a Raccolta Programmi" & """"
			.StandardOutputEncoding = Encoding.GetEncoding(437) '<== codifica MS-DOS Latin 1 
		End With
		p.Start()
		'p.WaitForExit() '<== così va in errore

		Dim s As String = p.StandardOutput.ReadToEnd()
		File.WriteAllText("c:\tmp\dir.txt", s, Encoding.UTF8)

	End Using



	Console.Write("Premere un tasto per continuare . . . ") : Console.ReadKey()
End Sub

funziona solo se elimino l'istruzione p.WaitForExit()

cosa sbaglio?