Windows runtime 如何在C#/XAML Metro应用程序中使用HttpWebRequest(或)HttpClient进行同步服务调用?

Windows runtime 如何在C#/XAML Metro应用程序中使用HttpWebRequest(或)HttpClient进行同步服务调用?,windows-runtime,microsoft-metro,httpwebrequest,dotnet-httpclient,Windows Runtime,Microsoft Metro,Httpwebrequest,Dotnet Httpclient,我正在开发一个C#/Xaml Metro应用程序,根据需求,我希望有一个同步服务调用,而不是异步服务调用 这是我在异步操作中使用的,但我想进行Synchronus服务调用: HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://xxxxxxx"); request.Method = "POST"; request.Credentials = new NetworkCredential("xxx

我正在开发一个C#/Xaml Metro应用程序,根据需求,我希望有一个同步服务调用,而不是异步服务调用

这是我在异步操作中使用的,但我想进行Synchronus服务调用

    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应用程序中使用HttpWebRequest或HttpClient进行同步服务调用?

进行较小的更改。使用
request.GetRequestStreamAsync()
,而不是
wait 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)
{
}
更多信息:

我正在开发一个C#/Xaml Metro应用程序,根据需求,我希望有一个同步服务调用,而不是异步服务调用


正确的解决办法是改变“要求”。Metro应用程序应该是异步的,而不是同步的。如果您开发的Metro应用程序具有同步UI(这很难,但可能),它可能会被应用商店拒绝。

我使用此方法,因为它允许在等待之前执行其他工作:

        var t = request.GetRequestStreamAsync();
        //do other work here
        t.Wait();
        using (Stream requestStream = t.Result)
        {
        }

这是我要求的一部分。你能告诉我怎么做,或者告诉我怎么等到异步调用完成(除了使用wait)吗??我想完全等待,在异步调用完成之前不做任何操作??您应该使用异步。这是一个更好的模型,意味着您的应用程序不太可能对用户感到“锁定”和无响应。添加用于“身份验证”的UI,而不是进行同步