public void Dispose()
{
if (_isDisposed)
{
return;
}
CancellationTokenSource snapshot = null;
lock (_thisLock)
{
if (_isDisposed)
{
return;
}
_isDisposed = true;
snapshot = _cancellationTokenSource;
_cancellationTokenSource = null;
}
if (snapshot != null)
{
snapshot.Dispose();
}
}