0

非同期プログラミング モデル(APM) を多用する .Net ライブラリをWindows ストア アプリ ライブラリに移植しています。

ライブラリを使用する他のコードが Windows ストア アプリのバージョンで機能するように、メソッドの定義を同じに保ちたいと思います。(つまり、私が好む限り、非同期待機パターンはありません)。

問題は、Windows ストア アプリは APM と互換性があるように見えますが、具体的なAsyncResultクラスが欠落していることです。その結果BeginInvoke()、コールバックと call で呼び出されたデリゲート インスタンスを取得できませんEndInvoke()

public MyObject EndDoSomething (IAsyncResult result)
{
    // Retrieve the delegate.
    AsyncResult asyncResult = (AsyncResult)result; // Not possible in Windows store app - no AsyncResult

    // Wait for the WaitHandle to become signaled.
    result.AsyncWaitHandle.WaitOne();

    // Call EndInvoke to retrieve the results.
    MyObject rv = ((MyAsynchronousDelegate)asyncResult.AsyncDelegate).EndInvoke(result);

    // Close the wait handel
    result.AsyncWaitHandle.Close()  // Close() is also missing

    return rv;
}

では、何をすべきか?

4

0 に答える 0