public void Kill()
{
if (!alive)
return;
main_process = null;
Process[] procs;
lock (process_hash.SyncRoot) {
procs = new Process [process_hash.Count];
process_hash.Values.CopyTo (procs, 0);
}
foreach (Process proc in procs) {
proc.Kill ();
}
kill_event.WaitOne ();
}