public void Detach()
{
if (main_process == null)
throw new TargetException (TargetError.NoTarget);
else if (!main_process.CanDetach)
throw new TargetException (TargetError.CannotDetach);
Process[] procs;
lock (process_hash.SyncRoot) {
procs = new Process [process_hash.Count];
process_hash.Values.CopyTo (procs, 0);
}
foreach (Process proc in procs) {
proc.Detach ();
}
}