11

1つ以上の待機者と待機可能ファイルを作成することで、C#でコルーチンを構築することは可能ですか?

理想的には、次のようなものを書けるようにしたいと思います。

void async Click() {
  var mouse_position = await left_mouse_click();
  await shoot_projectile();
}

次に、Clickメソッドから、別の非同期メソッド内で待機できるもの、またはMoveNext/GetResultメソッドで明示的に反復できるものを取得します。

最終的な目標は、ゲーム開発フレームワーク( http://casanova.codeplex.com )のために、C#async / awaitをF#モナディックコルーチンと統合する必要があることです。

4

1 に答える 1

7

1つ以上の待機者と待機可能ファイルを作成することで、C#でコルーチンを構築することは可能ですか?

もちろん!単純なコルーチンを構築するために使用するブログ投稿があります。JonSkeetには、カスタムの待機可能オブジェクトを使用して単純なコルーチンを構築するブログ投稿があります。TaskScheduler

しかし、残りの質問とコメントを見ると、コルーチンが本当に必要なものであるかどうかはわかりません。待機可能なものを「反復」したい場合、最善の策はReactive Extensions(とうまく相互運用するasync)です。「非同期yield」用のC#言語機能はありません。

于 2013-03-17T13:15:53.543 に答える