0

REST API を使用する Android アプリケーションを WP7 プラットフォームに移植しています。

Android では、すべての REST API 呼び出しがブロックされており、手動でエグゼキューターを使用して、ネットワーク I/O を実行するスレッドのバランスを取ります。

WP7 と Silverlight では、HttpWebRequest.BeginGetResponse を使用する必要があり、応答を読み取る非同期バリアントしかありません。

それは...ですか:

1) I/O Asynchronous Completion のようなものを使用していますが、それは本当に非同期ですか? または 2) 内部で読み取り/書き込み操作をブロックするだけでなく、その背後にあるスレッドを使用するだけですか?

4

1 に答える 1

0

Reflector を使用してソース コードを確認したところ、スレッド プールで実行されたブロッキング呼び出しです。

public override IAsyncResult BeginGetResponse(AsyncCallback callback, object state)
{
    this.startGetResponse();
    LazyAsyncResult result = new LazyAsyncResult(this, state, callback);
    if (!ThreadPool.QueueUserWorkItem(new WaitCallback(this.asyncGetResponse), result, true))
    {
        throw new OutOfMemoryException(SR.GetString(0x49, new object[0]));
    }
    return result;
}
于 2012-07-29T19:47:04.830 に答える