csharp C#5.0 async / awaitでの主要メソッドの书き方

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csharp C#5.0 async / awaitでの主要メソッドの书き方相关的知识,希望对你有一定的参考价值。

class Program
{
  static void Main()
  {
    //
    // Mainメソッドはasync付けられないので
    // 一階層挟んでタスクを待ち合わせするようにする
    //
    ExecMainProc().Wait();
  }

  internal static async Task ExecMainProc()
  {
    try
    {
      //
      // 実際のメイン処理を待機する処理を記述.
      // ここはMainメソッドではないのでawaitが使える
      //
      await new Program().Exec();
    }
    catch (Exception ex)
    {
      //
      // Mainメソッドに対して例外を飛ばさないよう
      // ここで例外を捕らえる。awaitしているので
      // AggregateExceptionをキャッチする必要は無い
      //
      Console.WriteLine(ex);
    }      
  }

  internal async Task Exec()
  {
    //
    // 処理を記述.
    //
    // 以下では例としてStackExchange.Redisを
    // 利用してRedisに非同期アクセスしている.
    //
    var connection = await ConnectionMultiplexer.ConnectAsync("接続文字列");
    var db = connection.GetDatabase();

    await db.StringSetAsync("Key1", "日本語の文字列");

    var jsonString = GetJsonString();
    await db.StringSetAsync("Key2", jsonString);

    var result = await db.StringGetAsync("Key1");
    var result2 = await db.StringGetAsync("Key2");
    
    Console.WriteLine(result);
    Console.WriteLine(result2);
  }
}

以上是关于csharp C#5.0 async / awaitでの主要メソッドの书き方的主要内容,如果未能解决你的问题,请参考以下文章

csharp Async C#program.cs

[译] C# 5.0 中的 Async 和 Await (整理中...)

如何正确理解.NET 4.5和C#5.0中的async/await异步编程模式

C#与C++的发展历程第三 - C#5.0异步编程巅峰

.NET 5.0+ 无需依赖第三方 原生实现定时任务

C#5.0异步