【问题标题】:UWP NetworkConnectionChanged Event to start and stop a timerUWP NetworkConnectionChanged 事件启动和停止计时器
【发布时间】:2017-01-03 13:15:11
【问题描述】:

我按照herehere 的一些说明完成了这项工作,但我只得到了一个允许我在我的应用程序中检查互联网连接的字段。

我需要的是在整个应用程序中的连接状态发生变化时获取一个事件以对此事件做出反应。

所以我已经从here 实现了单例类网络可用性。这对我来说可以检查连接。

在我的应用程序中,计时器定期通过 http 请求获取数据。 现在我想停止计时器以防连接丢失并启动计时器以防连接再次恢复。

如何在除NetworkAvailability 类之外的其他类中实现NetworkStatusChanged Event

【问题讨论】:

  • 我想你可以只检查NetworkAvailabilty.IsNetworkAvailable 会给你网络可用性的状态。基于windowsapptutorials.com/windows-10/…
  • 是的,我当然可以这样做,但是当您想到请求的初始化时:步骤是:1)检查连接 2)如果连接成功,则获取所有 http数据,否则等待连接。所以我将再次需要一个计时器来每 10 秒检查一次连接,然后我可以再次开始获取数据。触发一个事件然后为循环更新激活所有其他计时器不是更容易吗?
  • 我已经更新了答案以包含该事件,请看一下,它是一个伪代码,我希望它会有所帮助。
  • 是的,它有帮助。我试图这样做,事件发生在正确的时间。我害怕创建一个新的自定义事件,即使已经有这样的NetworkInformationOnNetworkStatusChanged event' in the NetworkAvailabilty 类`
  • 很高兴,编码愉快

标签: c# uwp


【解决方案1】:
void timer1_Tick(object sender, EventArgs e) 
{ 
   //Based on singleton instance,
   if (NetworkAvailabilty.Instance.IsNetworkAvailable)
   {
      GetDataFromHttp();
   }
   else
   {
      //No Internet connection
   }
}

你可以像这样连接事件。

NetworkAvailabilty.Instance
                  .OnNetworkAvailabilityChange += Instance_OnNetworkAvailabilityChange;


void Instance_OnNetworkAvailabilityChange(bool isNetWorkAvailable)
{
       if(isNetWorkAvailable)
          GetData();
}

【讨论】:

    猜你喜欢
    • 2016-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多