タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Awaitableに関するa-hamahamaのブックマーク (2)

  • 非同期メソッド入門 (9) - Awaitableパターンの自前実装 - xin9le.net

    前回はawaitするためのコンパイラ要件について確認しました。コンパイラは独自型をawaitするための汎用性を残した展開を行います。ここでは実際にAwaitableな型を自前実装してみます。 Awaitableパターンの実装 Awaitable型 まずawait演算子に渡すAwaitable型を作成します。ここでは、外部からデリゲートとして与えられたタスクの非同期実行や、そのタスクが完了しているかどうかの取得、完了時にコールバックしてほしい処理の登録などを実装します。以下にそのサンプルを示します。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespac

    非同期メソッド入門 (9) - Awaitableパターンの自前実装 - xin9le.net
  • 非同期メソッドの内部実装

    概要 Ver. 5.0 C# はこれまでも一貫して、「言語自体(コンパイラー)に多くのことをさせ過ぎない」、 「可能な限りフレームワーク側(クラス ライブラリ側)に実装を任せる」という方針で機能追加を行っています。 例えば、foreach や LINQ の実装がその例ですが、以下のように、コンパイラーの仕事はメソッド呼び出しへの変換になります。 「foreach」は、enumrable/enumerator パターンに沿って実装されたクラスなら何でも列挙可能。 単純に、GetEnumerator メソッドや MoveNext, Current などの呼び出しに置き換えられる。 LINQ「クエリ式」は、Select や Where という名前のメソッドを持っていれば何でも問い合わせ可能。 非同期メソッドも同様の方針を取っていて、 項で説明するようなパターンに沿ったクラスなら、なんでも aw

    非同期メソッドの内部実装
  • 1