0

/Taskよりも簡単に使えるようになりました。今、私は/を学ぶために使用しようとしています。asyncawaitTaskasyncawait

    static void Main(string[] args)
    {
        Console.ReadKey(true);
        //Magic1(); 
        Magic2();
        Console.WriteLine("{0}", DateTime.Now.ToString());
        Console.ReadKey(true);
    }

    static async void Magic1()
    {
        var taskA = GetDataAsync();
        var taskB = GetDataAsync();
        var taskC = GetDataAsync();

        Console.WriteLine("a: " + await taskA);
        Console.WriteLine("b: " + await taskB);
        Console.WriteLine("c: " + await taskC);
    }

    static Task Magic2()
    {
        return Task.Run(() =>
        {
            var taskA = GetDataAsync();
            var taskB = GetDataAsync();
            var taskC = GetDataAsync();

            Task.WaitAll(new Task[] { taskA, taskB, taskC });

            Console.WriteLine("a: " + taskA.Result);
            Console.WriteLine("b: " + taskB.Result);
            Console.WriteLine("c: " + taskC.Result);
        });
    }

    static Task<string> GetDataAsync()
    {
        return Task.Run(() => 
        {
            var startTime = DateTime.Now;
            for (var i = 0; i < 1000000000; i++)
            {
            }
            var endTime = DateTime.Now;
            return startTime.ToString() + " to " + endTime.ToString() + " is " + (endTime - startTime).ToString();
        });
    }

同じことを行うように見える2つのメソッドを作成しました。私の質問は次のとおりです。

1)ボンネットの下と同じですかMagic1Magic2

2) それらが同じでない場合、andキーワードMagic1を使用せずに同じことを行うメソッドに変換できますか?asyncawait

4

2 に答える 2