5

WP8 で async/await パターンのサポートはありますか?

Web ベースの API から XML を取得する必要がありますが、そのように見えるWebClientWebRequest、サポートしていません。

WP8 BCL で Web アクセスに使用できる async/await をサポートするクラスはありますか? そうでない場合、使用できるライブラリはありますか?

それをサポートするラッパーを作成するのはそれほど難しいことではないことはわかっていますが、これは SDK に含まれるもののようです。

4

5 に答える 5

16

WP8 BCL で Web アクセスに使用できる async/await をサポートするクラスはありますか?

これは WP8 SDK のクローズド ベータ中に提起された懸念事項であるため、残念ながらノーと答えることができます。

しかし、あなたが述べたように、独自のラッパーを作成するのはかなり簡単です。

例えば:

public static class Extensions
{
    public static Task<string> DownloadStringTask(this WebClient webClient, Uri uri)
    {
        var tcs = new TaskCompletionSource<string>();

        webClient.DownloadStringCompleted += (s, e) =>
        {
            if (e.Error != null)
            {
                tcs.SetException(e.Error);
            }
            else
            {
                tcs.SetResult(e.Result);
            }
        };

        webClient.DownloadStringAsync(uri);

        return tcs.Task;
    }
}
于 2012-11-01T09:34:26.233 に答える
8

このブログ投稿で説明されているNuGetパッケージMicrosoft.Threading.Tasks.Extensions.Phone.dllの一部として提供されているWP8のサポートがいくつかあります。Microsoft.Bcl.Async

特に、が含まれますWebClient.DownloadStringTaskAsync

于 2012-11-01T20:17:42.907 に答える
0

WP8 にはネイティブの async/await サポートがありますが、HttpClient や他のクラスが欠落しているなど、いくつかの制限があります。
WP7 は AsyncCTP を使用して VS2010 で async/await をサポートしていましたが、VS2012 では最近 Microsoft.Bcl.Async として再追加されました:
https://nuget.org/packages/Microsoft.Bcl.Async/1.0.12-beta

于 2012-11-01T21:31:32.770 に答える
0

WP8 で async/await パターンのサポートはありますか?

明確にするために、Windows Phone 8 では C# 5.0 が完全にサポートされています。 WinRT API は、PeopleHub への同期や I/O API の使用など、async/await に大きく依存しています。

ただし、Silverlight と古い .NET API は、WebClient などのクラスに async/await を使用するように更新されていません。

于 2012-11-01T09:58:48.330 に答える