2010-09-09 50 views
0

我正在写一个.Net类库,当信号强度高于某个阈值时,它将连接到一个特定的Wifi网络,这个网络的名字是事先已知的。可以重置Windows Native Wifi信号强度更新间隔吗?

它的一切都很精美,除了性能稍差。我有一个反复调用WlanGetAvailableNetworks()的轮询线程。这个循环执行得很好 - WLanGetAvailableNetworks()通常只需要10-20ms。然而,WLAN_AVAILALBLE_NETWORK结构中的信号强度属性似乎需要很长时间才能更新。我已经看到,当移动到具有已知信号强度的区域时,注册更新的值需要长达100秒。

我发现更新间隔,谁实施了NETSH产卵神秘的引用,包括这一个来自一个人: http://www.codeproject.com/KB/gadgets/WifiScanner.aspx?msg=3031431

但我还没有发现任何人谁是处理这个具体问题: 是它可以调整本地Wifi API中信号强度和其他网络参数的更新间隔?

或者,我错过了另一个有用的概念? (我是一个完整的noob,关于Wifi)。

可能相关的环境信息: - NET 3.5的 - XP加上KB修为WlanApi - C#/ VS 2008(4.0和VS2010提供)

thanks -- 
Carl 

回答

2

哎呀。我在WLANAPI文档中错过了这个:WlanScan()!在WlanGetAvailableNetworks()之前调用它以确保WlanGetAvailableNetworks()返回更多或更少的当前信息。根据文档(http://msdn.microsoft.com/en-us/library/ms706783(VS.85).aspx), WlanScan()立即完成并开始异步扫描。

经验上,似乎发生的情况是,下一个WlanGetAvailableNetworks()似乎停止,直到扫描完成(3.085秒,+/- 0.031秒,在我的测试中)。所以,正如文件所指出的那样,你不想在任何会削弱性能的地方这样做。另外,至少在XP(Vista和7版本的WLANAPI支持单网WlanScan(),可能会更快地完成)上,三秒钟可能是最佳的时间分辨率。

问题解决了,或多或少。