internal void OnTrackerCanceled(object sender, EventArgs e) { // If we've already finished just before the user hits cancel then we // ignore the cancel lock (m_lock) { if (m_finished) { return; } } m_cancelableFuture.Cancel(); }