本文整理汇总了C#中System.Threading.CancellationTokenRegistration.TryDeregister方法的典型用法代码示例。如果您正苦于以下问题:C# CancellationTokenRegistration.TryDeregister方法的具体用法?C# CancellationTokenRegistration.TryDeregister怎么用?C# CancellationTokenRegistration.TryDeregister使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Threading.CancellationTokenRegistration
的用法示例。
在下文中一共展示了CancellationTokenRegistration.TryDeregister方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InternalRegister
internal CancellationTokenRegistration InternalRegister(Action<object> callback, object stateForCallback, SynchronizationContext targetSyncContext, ExecutionContext executionContext)
{
this.ThrowIfDisposed();
if (!this.IsCancellationRequested)
{
int num = Thread.CurrentThread.ManagedThreadId % CancellationTokenSource.s_nLists;
CancellationCallbackInfo cancellationCallbackInfo = new CancellationCallbackInfo(callback, stateForCallback, targetSyncContext, executionContext, this);
SparselyPopulatedArray<CancellationCallbackInfo>[] array = this.m_registeredCallbacksLists;
if (array == null)
{
SparselyPopulatedArray<CancellationCallbackInfo>[] array2 = new SparselyPopulatedArray<CancellationCallbackInfo>[CancellationTokenSource.s_nLists];
array = Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>[]>(ref this.m_registeredCallbacksLists, array2, null);
if (array == null)
{
array = array2;
}
}
SparselyPopulatedArray<CancellationCallbackInfo> sparselyPopulatedArray = Volatile.Read<SparselyPopulatedArray<CancellationCallbackInfo>>(ref array[num]);
if (sparselyPopulatedArray == null)
{
SparselyPopulatedArray<CancellationCallbackInfo> value = new SparselyPopulatedArray<CancellationCallbackInfo>(4);
Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>>(ref array[num], value, null);
sparselyPopulatedArray = array[num];
}
SparselyPopulatedArrayAddInfo<CancellationCallbackInfo> registrationInfo = sparselyPopulatedArray.Add(cancellationCallbackInfo);
CancellationTokenRegistration result = new CancellationTokenRegistration(cancellationCallbackInfo, registrationInfo);
if (!this.IsCancellationRequested)
{
return result;
}
if (!result.TryDeregister())
{
return result;
}
}
callback(stateForCallback);
return default(CancellationTokenRegistration);
}
示例2: InternalRegister
internal CancellationTokenRegistration InternalRegister(Action<object> callback, object stateForCallback, SynchronizationContext targetSyncContext, ExecutionContext executionContext)
{
this.ThrowIfDisposed();
if (!this.IsCancellationRequested)
{
int index = Thread.CurrentThread.ManagedThreadId % s_nLists;
CancellationCallbackInfo element = new CancellationCallbackInfo(callback, stateForCallback, targetSyncContext, executionContext, this);
if (this.m_registeredCallbacksLists == null)
{
SparselyPopulatedArray<CancellationCallbackInfo>[] arrayArray = new SparselyPopulatedArray<CancellationCallbackInfo>[s_nLists];
Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>[]>(ref this.m_registeredCallbacksLists, arrayArray, null);
}
if (this.m_registeredCallbacksLists[index] == null)
{
SparselyPopulatedArray<CancellationCallbackInfo> array = new SparselyPopulatedArray<CancellationCallbackInfo>(4);
Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>>(ref this.m_registeredCallbacksLists[index], array, null);
}
SparselyPopulatedArrayAddInfo<CancellationCallbackInfo> registrationInfo = this.m_registeredCallbacksLists[index].Add(element);
CancellationTokenRegistration registration = new CancellationTokenRegistration(this, element, registrationInfo);
if (!this.IsCancellationRequested)
{
return registration;
}
if (!registration.TryDeregister())
{
this.WaitForCallbackToComplete(element);
return new CancellationTokenRegistration();
}
}
callback(stateForCallback);
return new CancellationTokenRegistration();
}
示例3: InternalRegister
internal CancellationTokenRegistration InternalRegister(Action<object> callback, object stateForCallback, SynchronizationContext targetSyncContext, ExecutionContext executionContext)
{
ThrowIfDisposed();
if (!IsCancellationRequested)
{
var index = Thread.CurrentThread.ManagedThreadId % _nLists;
var element = new CancellationCallbackInfo(callback, stateForCallback, targetSyncContext, executionContext, this);
var registeredCallbacksLists = _registeredCallbacksLists;
if (registeredCallbacksLists == null)
{
var arrayArray2 = new SparselyPopulatedArray<CancellationCallbackInfo>[_nLists];
registeredCallbacksLists = Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>[]>(ref _registeredCallbacksLists, arrayArray2, null);
if (registeredCallbacksLists == null)
registeredCallbacksLists = arrayArray2;
}
var array = Volatile.Read<SparselyPopulatedArray<CancellationCallbackInfo>>(ref registeredCallbacksLists[index]);
if (array == null)
{
var array2 = new SparselyPopulatedArray<CancellationCallbackInfo>(4);
Interlocked.CompareExchange<SparselyPopulatedArray<CancellationCallbackInfo>>(ref registeredCallbacksLists[index], array2, null);
array = registeredCallbacksLists[index];
}
var registrationInfo = array.Add(element);
var registration = new CancellationTokenRegistration(element, registrationInfo);
if (!IsCancellationRequested)
return registration;
if (!registration.TryDeregister())
return registration;
}
callback(stateForCallback);
return new CancellationTokenRegistration();
}