public void Restart ()
{
ClearEvents ();
var threads = new Thread [0];
lock (Threads) {
threads = new Thread [Threads.Length];
Threads.CopyTo (threads, 0);
}
foreach (Thread t in threads) {
AbortThread (t);
}
}