public void ShutdownWithAbort(TimeSpan timeout) { lock(runable) { _shutdown = true; if(runningThread != System.Threading.Thread.CurrentThread) { if(iterating) { System.Threading.Thread.Sleep(timeout); } if(iterating) { runningThread.Abort(); } } } }