1

我正在开发一个 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

做较小的改变。而不是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 回答
0

我正在开发一个 C#/Xaml Metro 应用程序,根据要求,我想要一个同步服务调用,而不是同步服务调用。

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

于 2013-10-16T12:58:42.587 回答