internal void OperationFinished()
{
lock (m_lock)
{
m_finished = true;
// Close the tracker if it's open. Make sure to invoke the close so
// that it occurs on the proper thread
if (m_tracker != null)
{
// A race condition can occur as to who shuts down first so make sure to swallow
// that exception here
SafeInvoke.BeginInvokeNoThrow(
m_tracker,
() => m_factory.DestroyProgressTracker(m_tracker));
}
}
}