gpt4 book ai didi

c# - Windows Phone 8 上的 HttpWebRequest 同步

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:04 26 4
gpt4 key购买 nike

为了设计/重用可用于 WPF 应用程序、Windows Phone 8 应用程序和更高版本的 Windows 8/RT 应用程序的库,我们需要进行一些 HttpWebRequest 调用,最好是同步调用,以免破坏现有应用程序。

问题是代码已经到位,使用 ManuelResetEvent 同步进行网络请求。它在 WPF 和 Win 8 RT 中完美运行,但在 Windows Phone 8 中(至少在模拟器上),程序挂起,如下所示:

ManualResetEvent with HttpWebRequest on WP7

我尝试将调用封装在任务或线程中,但它仍然是一样的。

因此,我更改了代码以使用 async/await,它当然非常适合 WP8 和 Win 8,但我们的桌面应用程序针对 .NET 4.0 框架以实现 XP 兼容性。当然,有适用于 Visual Studio 2012 的 Async Targeting Pack,但这有两个问题:

  • 应使用 async/await 重写/仔细测试桌面应用程序代码
  • Mono 的稳定版本不支持 async/await(也许在 Windows 上使用 Async Targeting Pack 编译然后在 Mono 运行时运行它可以工作吗?应该测试)

所以,我尝试同步调用异步标记的方法,只是为了看看。我使用了这里给出的 AsyncHelpers :

How would I run an async Task<T> method synchronously?

它适用于 WPF 和 Win 8 应用程序,但在 Windows Phone 8 上挂起。

有人知道如何拥有可以随处使用而无需卡在 Windows Phone 上的同步代码(或带有 await/async 的看起来同步的代码)吗?

最佳答案

也许你云使用Result任务的属性。它适用于 .NET 4.0/4.5 和 Windows Phone 8。

关于c# - Windows Phone 8 上的 HttpWebRequest 同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064753/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com