private void CompleteOperation() { lock (this) { completeFlag = true; isRunning = false; Monitor.Pulse(this); // See comments in AcknowledgeCancel re use of // Async. FireAsync(Completed, this, EventArgs.Empty); } }