加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

windows-8 – WinRT HttpClient阻止闪屏

发布时间:2020-12-14 05:41:53 所属栏目:Windows 来源:网络整理
导读:我在某个Page的LoadState方法中做异步请求.我使用HttpClient发出请求,我希望在等待结果时闪屏消失. 如果我没有连接到任何网络,闪屏立即消失,我得到一个空白页面,因为请求显然没有发生. 但是,如果我连接到网络但有连接问题(例如,我设置了错误的IP地址),它似乎
我在某个Page的LoadState方法中做异步请求.我使用HttpClient发出请求,我希望在等待结果时闪屏消失.

如果我没有连接到任何网络,闪屏立即消失,我得到一个空白页面,因为请求显然没有发生.

但是,如果我连接到网络但有连接问题(例如,我设置了错误的IP地址),它似乎启动请求并阻止.

我的期望是HttpClient会意识到它无法发送请求并抛出异常或只是返回一些东西.

我设法通过设置大约800毫秒的超时来解决阻塞问题,但现在当Internet连接正常时它无法正常工作.这是最好的解决方案,我应该设置超时吗?什么是适当的超时,使我能够区分无限期阻塞呼叫和正好在较慢网络上的正确呼叫?

我可能会在每次请求之前检查互联网连接,但这听起来像是一个不可预测的解决方案……

编辑:现在,它真的很有趣.我再次尝试过,它阻止了这一点:

var rd = await httpClient.SendAsync(requestMsg);

如果我按照评论中的建议使用Task.Run()并获得一个新的线程,那么它总是很好.
但是没有Task.Run(),如果没有Internet访问但网络访问不是“有限”(它表示IPv4连接是“Internet访问”,虽然我无法在浏览器中打开单个网站而没有数据从Web服务返回.它只是抛出System.Net.Http.HttpRequestException,这是我首先想到的东西)只有当网络连接受限时才会阻塞.

解决方法

如果不是设置超时,而是使用了检查连接状态

public static bool IsConnected
    {
        get
        {
            return NetworkInformation.GetInternetConnectionProfile() != null;
        }
    }

这样,如果IsConnected,那么你打电话;否则,忽略它.

我不确定你是否在App.xaml.cs中运行它?我发现在该类中发出的请求可能是变化无常的,最好将功能移动到扩展的启动屏幕,以确保应用程序在激活过程中始终如一.

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/Hh868191(v=win.10).aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读