IAwaitable クラス (スレッドをブロックせずに非同期呼び出しを実装するもの) を実装したいと思っていました。
最新バージョンの AsyncCTP をインストールしましたが、コンパイラは IsCompleted() メンバーが必要だと言っています。さて、CTP のプレビューが少し進みました (プレビューのようにわかります)。
質問: AsyncCTP 言語拡張機能が現在期待しているインターフェイスは何ですか?
質問:このすべてにおいて、ラムダ/デリゲートを介して「IAwaitable」にシグナルを送ることができると仮定していますか? これは可能ですか?EndAwait を呼び出しますか? インテリセンスは、EndAwait を呼び出して結果を取得することを提案しているため、正しく聞こえません。何か案は?
これまでに見つけた例はすべて、AsyncCTP ライブラリが既に実装している次のような機能に関するものです。
await new WebClient().DownloadStringTaskAsync(uri).ConfigureAwait(false);
バックグラウンド:
Jon Skeets のページ (再び) で、この例を見ています。
using System;
class Test
{
static async void Main()
{
await new Awaitable();
}
}
class Awaitable
{
public Awaiter GetAwaiter()
{
return new Awaiter();
}
}
class Awaiter
{
public bool BeginAwait(Action continuation)
{
return false;
}
public int EndAwait()
{
return 1;
}
}