【问题标题】:WebClient - how to BLOCK UIWebClient - 如何阻止 UI
【发布时间】:2012-05-28 10:22:11
【问题描述】:

当我的应用程序在墓碑时,我需要等到WebClient UploadStringAsync 将在被墓碑之前返回响应。我试图通过阻塞 UI 线程几秒钟来实现它,但我注意到,当 UI 被阻塞时,没有响应。当我释放锁(无论是Thread.sleepManualResetEvent)时,响应也在同一时刻到来。 当然,UploadStringAsyncUploadStringCompleted 在 UI 以外的线程上工作。 也许你会知道这些行为的原因是什么?

【问题讨论】:

    标签: .net multithreading windows-phone-7.1 webclient


    【解决方案1】:

    你不能也不应该这样做:

    当应用程序被停用时,您不能无限期阻止,因为操作系统不允许您,您可能必须无限期更新,因为无法确定网络请求需要多长时间,甚至不可能。

    相反,您应该在应用正常使用期间的适当时间(或多次)向您的网络服务器提交数据。如果您想在停用期间保存特定状态,您应该保留它(根据需要),然后在重新激活或重新启动应用程序时发送(再次根据数据的类型和相关性酌情发送)。

    【讨论】:

    • 感谢您的建议。但情况并不那么简单——我的应用程序中的一部分需要 3 个 webRequest,在彼此中,我必须使用来自前一个 webRequest 响应的信息。而且我无法重新发送 webRequest,因为服务器会将其解释为错误并仅提供有关错误的信息。所以,如果我错过了 webResponse,我不能只是重新发送数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-01
    • 2014-02-17
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2022-01-23
    相关资源
    最近更新 更多