WlanClient 未更新/无法关闭 WlanClient

问题描述 投票:0回答:1

我正在尝试创建一个后台工作程序来获取所有可用 WLAN 网络的最新 RSSI 和链路质量。但是,如果我在此后台工作程序中初始化 WlanClient,我会收到此错误消息。

尝试与网络服务器建立会话,但已经与该服务器 vb.net 建立了太多会话

但是,如果我创建公共类 WlanClient,它不会更新 RSSI 和链路质量值,因为会话保持打开状态并且未关闭。不确定如何关闭会话。然而,这是我用作后台工作者的代码。

Private Sub Application_Idle(ByVal sender As Object, ByVal e As EventArgs)
    Try
        'Dim wlan As New WlanClient()
        'For Each wlanIface As WlanClient.WlanInterface In wlan.Interfaces
        For Each wlanIface As WlanClient.WlanInterface In WiFi.client.Interfaces
            Dim wlanBssEntries As Wlan.WlanBssEntry() = wlanIface.GetNetworkBssList()

            For Each network As Wlan.WlanBssEntry In wlanBssEntries
                Dim rss As Integer = network.rssi
                Dim macAddr As Byte() = network.dot11Bssid
                tMac = ""
                For i As Integer = 0 To macAddr.Length - 1
                    If tMac = "" Then
                        tMac += macAddr(i).ToString("x2").PadLeft(2, "0"c).ToUpper()
                    Else
                        tMac += ":" & macAddr(i).ToString("x2").PadLeft(2, "0"c).ToUpper()
                    End If
                Next
                Dim ssid As String = Encoding.ASCII.GetString(network.dot11Ssid.SSID, 0, CInt(network.dot11Ssid.SSIDLength))

                Dim available As Integer = 0
                Dim rowindex As Integer = -1
                For Each row As DataGridViewRow In DataGridView1.Rows
                    If row.Cells(0).Value.ToString().Equals(ssid) AndAlso row.Cells(1).Value.ToString().Equals(tMac) Then
                        available = 1
                        rowindex = row.Index
                        Exit For
                    End If
                Next
                If available = 0 Then
                    If Me.IsDisposed = True Then
                        Exit Sub
                    End If
                    DataGridView1.Rows.Add(ssid, tMac, network.dot11BssPhyType, rss, network.linkQuality)
                Else
                    If DataGridView1.Rows(rowindex).Cells(3).Value <> rss Or DataGridView1.Rows(rowindex).Cells(4).Value <> network.linkQuality Then
                        DataGridView1.Rows(rowindex).Cells(3).Value = rss
                        DataGridView1.Rows(rowindex).Cells(4).Value = network.linkQuality
                    End If
                End If
            Next
        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
    Application.DoEvents()
    Thread.Sleep(100)
End Sub

Public Class WiFi
    Public Shared client As New WlanClient()
End Class

请告诉我如何在需要时关闭客户端或处置本地声明的 WlanClient。

vb.net session wifi
1个回答
0
投票

通过如何重置 WLAN 信息的系统缓存?找到答案?在第一个

wlanIface.Scan()
循环后添加
For
解决了该问题。现在扫描正在获取新数据。

© www.soinside.com 2019 - 2024. All rights reserved.