未分類

C#のタスクとasync/awaitについて

投稿日:2017年12月16日 更新日:

 

非同期メソッドとasync/awaitキーワード

  • 非同期処理でありながら、コールバック記述をする事なく、awaitキーワードを使って完了待機を記述できる。
  • 「非同期メソッド」とは シグネチャにasyncを付けた特別なメソッドのこと。
  • あるメソッド内(MethodA)の処理内で非同期メソッドを使用する場合、MethodAにasyncキーワードを付加することによって、MethodAを呼び出す側にMethodA内で非同期メソッドが使用されていることを知らせ、MethodAの呼出し側で待たせるor待たせないを選択可能とさせる。
  • 非同期メソッドの戻り値は、必ずTask/Task<T>になる。return task/task<T>のような記述はないが、メソッド内の処理をタスクとして生成して、メソッドの戻り値として返している。
  • メソッド内のreturnはタスクの終了を示す。Task<T>の場合はreturn T;でタスクの結果の戻すことができる(Resultプロパティで取得する)。
  • 非同期メソッドの特徴はただ一つ、メソッド内でawaitキーワードを使えるようになること。
  • awaitキーワードの効果は、①「ロックされず指定したTaskの完了を待つ」②「タスク完了後に結果を取り出す」こと。
  • 非同期メソッドとは、複数の「タスク」の実行順序などを記述した「一つのタスク」である。メソッドの記述でタスクを生成している感じ。

 

 

非同期メソッドを待機しない場合の警告を消す方法

  • 非同期メソッドを呼び出す際は、多くの場合 await してその場で待機することが多いですが、待たなくても良い場合もあります。
  • そのような場合、await しなければ良いのですが、ただ await しないだけだと 「この呼び出しを待たないため、現在のメソッドの実行は、呼び出しが完了するまで続行します。呼び出しの結果に ‘await’ 演算子を適用することを検討してください。」 という警告が出てしまう。
  • 警告は消すコーディングの方法について

 

 

参考にさせて頂いたページ

Taskを極めろ!async/await完全攻略

Async なメソッドを待機しない場合の警告を消してみる

 

 

 

スポンサーリンク

スポンサーリンク

-未分類

執筆者:

関連記事

ES6のクラス定義について

  概要 JavaScript はプロトタイプベースの言語であり、クラスベースの言語とは異なりクラスというものが存在しませんでした。 プロトタイプを使ってクラスと同等なことを実現するというこ ...

JavaScriptのコンストラクタとプロトタイプについて

概要 Javascriptにはクラスという概念はない コンストラクタ定義+newによってインスタンスを生成する。 ES6以前ではclass構文が実装がされていなかったので、prototypeという機能 ...

lite-serverを使った開発サーバの構築

Lite-Serverのパッケージを使った開発サーバの構築方法を説明したいと思います。開発用のタスクはnpm-scriptsを使用します。 記載した実行環境は以下の通りです。Node.jsのインストー ...

Macについて

  シングルクォートやダブルクォートが勝手に変換される対応 (問題点) Macのテキストエディット(標準搭載のテキストエディタ)で、シングルクォート(’)やダブルクォート(”)などを入力した ...