Я генерирую несколько задач для обработки различными методами.Хотя некоторые методы достигают результата, мне нужно отменить эту задачу.С этой целью я генерирую и назначаю CancellationTokenSource для каждой задачи.Когда задача достигает своего результата, я могу отменить эту задачу.
Во время этой реализации я получаю сообщение об ошибке типа 'The CancellationTokenSource has been disposed.'
Я установил отладчик и проверил его значение, но не смог найти основную причину.этой ошибки.Как мы можем справиться с этой ошибкой?Мне нужно ваше лучшее предложение для этого.
//Create class for handle cancellationTokenSource with each Task individually
public class tempTask
{
public string symbolName { get; set; }
public System.Threading.CancellationTokenSource cts { get; set; }
public Task task { get; set; }
}
//Declaration of CTS, Binding Object Class
public static System.Threading.CancellationTokenSource _tokenSource = new System.Threading.CancellationTokenSource();
public static Dictionary<string, System.Threading.CancellationTokenSource> test = new Dictionary<string, System.Threading.CancellationTokenSource>();
public static List<tempTask> tempTasks = new List<tempTask>();
// In first method : creating object of CTS and sending as a parameter
_tokenSource = new System.Threading.CancellationTokenSource();
startAddToPosition(_tokenSource, _symbolName);
//In startAddToPosition method : Assigning TokenSource to Task
public static async void startAddToPosition(System.Threading.CancellationTokenSource cts1, string symbolName)
{
try
{
Task t1 = Task.Run(() => Task.Delay(30000, cts1.Token), cts1.Token);
tempTask tmp = new tempTask
{
cts = cts1,
task = t1,
symbolName = symbolName
};
tempTasksList.Add(tmp);
}
catch(Exception ex)
{
//Below line throwing an error `'The CancellationTokenSource has been disposed.'
var symName = test.FirstOrDefault(q => q.Value.Token == ex.CancellationToken).Key;
generateRealPosition(symName);
}
}
Итак, есть ли какая-то часть, которую мне не хватает, чтобы добавить в мой код для решения этой проблемы?