public void Cancel(VBComponent component = null)
{
lock (_central)
lock (_resolverTokenSource)
{
if (component == null)
{
_central.Cancel(false);
_central.Dispose();
_central = new CancellationTokenSource();
_resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
}
else
{
_resolverTokenSource.Cancel(false);
_resolverTokenSource.Dispose();
_resolverTokenSource = CancellationTokenSource.CreateLinkedTokenSource(_central.Token);
Tuple<Task, CancellationTokenSource> result;
if (_currentTasks.TryGetValue(component, out result))
{
result.Item2.Cancel(false);
result.Item2.Dispose();
}
}
}
}