0

我有一个注册 NotifyRouteChange() 并在异步调用中等待的应用程序。我们知道,基于 Windows 操作系统的路由表更改,此 API 会被回调。我需要更多关于是什么让 Windows 触发此功能的信息?

在我的 Win 7 Professional 环境之一中,我在一秒钟内收到 100 个 IP 地址更改通知。如何减少它?

谢谢,萨拉瓦娜

4

2 回答 2

0

好像是环境问题。

我用过

   ret = NotifyAddrChange(handle, &overlap);
   ret = NotifyRouteChange(handle, &overlap)); 

然后有一个回调函数来监控这些注册,如果 IP 地址/路由有任何变化,这些回调已经启动。这些回调函数已将这些通知传递给我的其他线程来处理,并再次注册相同的 API。

此问题并非在所有机器中都出现,而是在特定环境中出现。我的网络不会引发任何问题。

于 2015-03-12T03:32:21.303 回答
0

使用可等待的计时器来抑制事件,以便您的事件处理程序在最后一次 NW 更改事件后的最短时间后触发:

基本上当您收到地址/路线更改事件时:

  1. 设置可等待计时器(5 秒)(SetWaitableTimer)
  2. 每次地址/路由事件发出信号时,取消现有的可等待计时器 (CancelWaitableTimer) 并转到 1。
  3. 如果等待时间变为信号,则意味着地址/路由更改事件在过去 5 秒内没有发生。在此处调用您的 NW 更改处理程序。
于 2017-02-13T14:05:26.287 回答