/* Cleaup terminated processes */
foreach (Process dead in terminated) {
- process_data [dead].stdout.Close ();
- process_data [dead].stderr.Close ();
+ if (process_data [dead].stdout != null)
+ process_data [dead].stdout.Close ();
+ if (process_data [dead].stderr != null)
+ process_data [dead].stderr.Close ();
// This is needed to avoid CreateProcess failed errors :(
dead.Close ();
}
lock (monitor) {
fs = process_data [p2].stdout;
+
+ if (String.IsNullOrEmpty (e.Data))
+ process_data [p2].stdout = null;
}
if (String.IsNullOrEmpty (e.Data))
lock (monitor) {
fs = process_data [p2].stderr;
+
+ if (String.IsNullOrEmpty (e.Data))
+ process_data [p2].stderr = null;
+
}
- if (String.IsNullOrEmpty (e.Data))
+ if (String.IsNullOrEmpty (e.Data)) {
fs.Close ();
+
+ lock (monitor) {
+ process_data [p2].stderr = null;
+ }
+ }
else
fs.WriteLine (e.Data);
};