是否可以在不知道当前正在运行什么的情况下取消所有异步方法?
例如,我有几个可以运行异步任务的类:
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
}
}
是否可以做到这一点,而无需将任务保存到查询中?