0

我正在编写一个 .Net 类库,当信号强度高于某个阈值时,该类库将连接到名称预先知道的特定 Wifi 网络。

一切都很好,除了性能有点参差不齐。我有一个反复调用 WlanGetAvailableNetworks() 的轮询线程。此循环执行良好 - WLanGetAvailableNetworks() 通常只需 10-20 毫秒。但是,WLAN_AVAILALBLE_NETWORK 结构中的信号强度属性似乎需要很长时间才能更新。我发现当移动到信号强度已知的区域时,注册更新值最多需要 100 秒。

我从一个实现 NETSH 生成器的人那里找到了对更新间隔的神秘引用,包括这个:http: //www.codeproject.com/KB/gadgets/WifiScanner.aspx? msg=3031431

但是我还没有找到任何人解决了这个特定问题:是否可以在 Native Wifi API 中调整信号强度和其他网络参数的更新间隔?

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

可能相关的环境信息: -- .Net 3.5 -- XP plus KB fix for WlanApi -- C# / VS 2008(4.0 和 VS2010 可用)

thanks --
Carl
4

1 回答 1

2

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

根据经验,似乎发生的情况是下一个 WlanGetAvailableNetworks() 似乎会停止,直到扫描完成(在我的测试中为 3.085 秒,+/- 0.031 秒)。因此,正如文档所示,您不想在任何会削弱性能的地方执行此操作。此外,三秒可能是 wifi 信号检查的最佳时间分辨率,至少在 XP 上是这样(Vista 和 7 版本的 WLANAPI 支持单网络 WlanScan(),这可能会更快完成)。

问题解决了,或多或少。

于 2010-09-09T20:41:48.267 回答