У меня проблема с отменой задачи в C#, задача [0] не прекращает выполнение. Вот код.Отмена задачи в C#
var tokenSource = new CancellationTokenSource();
var token = tokenSource.Token;
Task[] tasks = new Task[2];
tasks[0] = Task.Run(() => {
SomeClass Object1 = new SomeClass();
if (tasks[1].IsCompleted)
{
tokenSource.Cancel();
}
},token);
tasks[1] = Task.Run(() =>
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
});
Возможный дубликат [Как отменить задачу в ожидании?] (Http://stackoverflow.com/questions/10134310/how-to-cancel-a-task-in-await) – Claudius
Стоит отметить, что мы не можете видеть, какой код выполняются другими задачами, и просто вызов 'CancellationTokenSource.Cancel()' фактически ничего не отменяет, на выполнение задачи лежит проверка маркера и действие по запросу аннулирования. – CodingGorilla
Вы никогда не запускаете 'tasks [1]', поэтому, конечно, он не будет завершен. Во-вторых, даже если вы * сделаете * запустили 'задачи [1]', он должен был бы почти сразу завершить, если бы он был помечен как 'IsCompleted' к тому времени, когда запускаются задачи [0]'. – Rob