1

要件に従って、ASynchronous Service Call ではなく Synchronous service call を使用したいという点で、C#/Xaml Metro アプリケーションを開発しています。

これは私が非同期操作に使用したものですが、同期サービス呼び出しを行いたいです:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxxxxx");
    request.Method = "POST";
    request.Credentials = new NetworkCredential("xxx", "xxx");
     using (Stream requestStream = await request.GetRequestStreamAsync())
    {
    }

C#/XAML Metro App で HttpWebRequest または HttpClient を使用して同期サービス呼び出しを行うにはどうすればよいですか?

4

3 に答える 3

2

待機する前に他の作業を行うことができるため、私はこの方法を使用します。

        var t = request.GetRequestStreamAsync();
        //do other work here
        t.Wait();
        using (Stream requestStream = t.Result)
        {
        }
于 2013-10-16T16:45:09.913 に答える
0

ASynchronous Service Call ではなく、Synchronous service call が必要な要件に従って、C#/Xaml Metro アプリケーションを開発しています。

正しい解決策は、「要件」を変更することです。Metro アプリは、同期ではなく非同期であると想定されます。同期 UI を使用して Metro アプリを開発する場合 (これは困難ですが可能です)、アプリ ストアから拒否される可能性があります。

于 2013-10-16T12:58:42.587 に答える
0

小さい変更を行います。の代わりにawait request.GetRequestStreamAsync()、 を使用しますrequest.GetRequestStreamAsync().Result

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxxxxx");
request.Method = "POST";
request.Credentials = new NetworkCredential("xxx", "xxx");
using (Stream requestStream = request.GetRequestStreamAsync().Result)
{
}

詳細:非同期の Task<T> メソッドを同期的に実行するにはどうすればよいですか?

于 2013-10-16T07:10:42.210 に答える