Ho read che questa porzione di codice può causare deadlock:Problemi DeadLock in Process.StandardOutput.ReadToEnd();
Process p = new Process();
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.FileName = "Write500Lines.exe";
p.Start();
p.WaitForExit();
string output = p.StandardOutput.ReadToEnd();
Perché
una condizione di deadlock può causare il processo padre chiama
p.WaitForExit
primap.StandardOutput.ReadToEnd
e il processo figlio scrive testo sufficiente per riempire il flusso reindirizzato. Il processo padre aspetterebbe indefinitamente per l'uscita del processo figlio. Il processo figlio aspetterebbe a tempo indeterminato affinché il genitore possa leggere dallo stream standardOutput completo .
Ma non so perché. Voglio dire, in questo caso qui, qual è il processo genitore, e qual è il bambino?
Potresti essere interessato a [questo post] (http://www.codeducky.org/process-handling-net), che spiega deadlocking e altre complessità del funzionamento con flussi di processo .NET. – ChaseMedallion