/// <summary> /// Runs the task on the current thread. /// </summary> public bool Run(CancellationToken cancellationToken) { ThreadId = Thread.CurrentThread.ManagedThreadId; GlobalListeners.Attach(this); bool result = false; try { var handle = new TaskHandle(Progress, _cancellationTokenSource.Token, _pauseEvent, this); result = Tool.Run(handle); } finally { GlobalListeners.Detach(this); ThreadId = -1; } return(result); }