2010-09-09 80 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(),可能會更快地完成)上,三秒鐘可能是最佳的時間分辨率。

問題解決了,或多或少。