C# asyncとawaitを使用して非同期処理を実行する

  • 作成日 2021.08.24
  • 更新日 2022.04.11
  • C#
C# asyncとawaitを使用して非同期処理を実行する

C#で、asyncとawaitを使用して非同期処理を実行するサンプルコードを記述してます。

環境

  • OS windows10 pro 64bit
  • Microsoft Visual Studio Community 2019 Version 16.7.1

asyncとawaitを使用

以下は、処理に10秒かかるメソッド「func1」と、3秒かかるメソッド「func2」を順次に実行せずに、「func1」を非同期に実行するコードとなります。

using System;
using System.Threading;
using System.Threading.Tasks;

namespace testapp
{
    class Program
    {
        static async Task Main(string[] args)
        {
            Task<string> task = func1();

            func2();

            Console.WriteLine(task.Result);

            Console.ReadLine();
        }

        static async Task<string> func1()
        {
            Console.WriteLine("func1開始 10秒待機");

            await Task.Delay(10000); // 10秒待機

            Console.WriteLine("func1終了 10秒経過");

            return "test";
        }

        static void func2()
        {
            Console.WriteLine("func2開始 2秒待機");
            
            Thread.Sleep(2000);

            Console.WriteLine("func2終了 2秒経過");
        }
    }
}

実行結果