Можно ли отменить все асинхронные методы, не зная, что в данный момент выполняется?
Например, у меня есть несколько классов, которые могут выполнять асинхронные задачи:
class Class1
{
public async void SomeTask()
{
for (int i = 0; i < 5; i++)
{
// Doing some job
await Task.Delay(2000);
}
}
}
class Class2
{
public async void ContinuouslyTask()
{
for (;;)
{
// Doing some job on background
await Task.Delay(1000);
}
}
}
И я хочу отключить каждую асинхронную задачу, прежде чем я выйду из системы:
class Program
{
static void Main(string[] args)
{
var p = new Program();
var c1 = new Class1();
var c2 = new Class2();
c1.SomeTask();
c2.ContinuouslyTask();
while (Console.ReadKey().Key != ConsoleKey.Enter) { }
p.Logout();
}
private void Logout()
{
// Cancel all async tasks
// And do logout work
}
}
Можно ли это сделать, не сохраняя задачи в запрос?