5

現在何が実行されているかを知らずに、すべての非同期メソッドをキャンセルすることは可能ですか?

たとえば、非同期タスクを実行できるいくつかのクラスがあります。

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
    }
}

タスクをクエリに保存せずにこれを行うことは可能ですか?

4

2 に答える 2