public void Run(Callable <T> c) { try { lock (this) { if (canceled) { return; } t = SThread.CurrentThread; started = true; } result = c.Call(); } catch (ThreadAbortException ex) { SThread.ResetAbort(); error = ex; } catch (Exception ex) { error = ex; } finally { lock (this) { done = true; service.RemoveTask(doneEvent); } doneEvent.Set(); } }
public static void ResetAbort() { NativeThread.ResetAbort(); }