Use an async callback with Task.ContinueWith

后端 未结 3 1907
长情又很酷
长情又很酷 2020-12-01 08:45

I\'m trying to play a bit with C#\'s async/await/continuewith. My goal is to have to have 2 tasks which are running in parallel, though which task is executing a sequence of

3条回答
  •  无人及你
    2020-12-01 09:29

    I'd like to add my answer to complement the answer which has already been accepted. Depending on what you're trying to do, often it's possible to avoid the added complexity of async delegates and wrapped tasks. For example, your code could be re-factored like this:

    class Program
    {
        static async Task Test1()
        {
            System.Console.WriteLine("Enter Test");
            await Task.Delay(100);
            System.Console.WriteLine("Leave Test");
        }
    
        static async Task Test2()
        {
            System.Console.WriteLine("Enter callback");
            await Task.Delay(1000);
            System.Console.WriteLine("Leave callback");
        }
    
        static async Task Test()
        {
            await Test1(); // could do .ConfigureAwait(false) if continuation context doesn't matter
            await Test2();
        }
    
        static void Main(string[] args)
        {
            Test().Wait();
            Console.WriteLine("Done with test");
        }
    }
    

提交回复
热议问题