Vb.net WlanClient未更新/无法关闭WlanClient

Vb.net WlanClient未更新/无法关闭WlanClient,vb.net,session,wireless,wifi,Vb.net,Session,Wireless,Wifi,我正在尝试创建一个后台工作程序,用于获取所有可用WLAN网络的最新RSSI和链路质量。但是,如果我在后台工作程序中初始化WlanClient,就会收到此错误消息 试图建立到网络服务器的会话,但已建立到该服务器vb.net的会话太多 但是,如果我创建一个公共类WlanClient,它不会更新RSSI和link quality值,因为会话保持打开和关闭。不确定如何关闭会话。但是,下面是我用作后台工作程序的代码 Private Sub Application_Idle(ByVal sender As

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

试图建立到网络服务器的会话,但已建立到该服务器vb.net的会话太多

但是,如果我创建一个公共类WlanClient,它不会更新RSSI和link quality值,因为会话保持打开和关闭。不确定如何关闭会话。但是,下面是我用作后台工作程序的代码

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
Private子应用程序\u Idle(ByVal发送方作为对象,ByVal e作为事件参数)
尝试
'将wlan设置为新的wlan客户端()
'对于wlan.Interfaces中的每个wlanface作为WlanClient.WlanInterface
对于WiFi.client.Interfaces中的每个wlanface作为WlanClient.WlanInterface
将WlanBssEntry设置为Wlan.WlanBssEntry()=wlanIface.GetNetworkBssList()
作为WlanBssEntry中的Wlan.WlanBssEntry用于每个网络
Dim rss作为整数=network.rssi
Dim macAddr As Byte()=network.dot11Bssid
tMac=“”
对于i,整数=0到macAddr.Length-1
如果tMac=”“,则
tMac+=macAddr(i).ToString(“x2”).PadLeft(2,“0”c).ToUpper()
其他的
tMac+=“:”&macAddr(i).ToString(“x2”).PadLeft(2,“0”c).ToUpper()
如果结束
下一个
Dim ssid As String=Encoding.ASCII.GetString(network.dot11Ssid.ssid,0,CInt(network.dot11Ssid.ssidlelength))
Dim可用为整数=0
Dim rowindex为整数=-1
对于DataGridView1.Rows中作为DataGridViewRow的每一行
如果row.Cells(0.Value.ToString().Equals(ssid)和row.Cells(1.Value.ToString().Equals(tMac),则
可用=1
rowindex=行。索引
退出
如果结束
下一个
如果可用=0,则
如果Me.IsDisposed=True,则
出口接头
如果结束
DataGridView1.Rows.Add(ssid、tMac、network.dot11BssPhyType、rss、network.linkQuality)
其他的
如果DataGridView1.Rows(rowindex).Cells(3).值rss或DataGridView1.Rows(rowindex).Cells(4).值network.linkQuality,则
DataGridView1.Rows(rowindex).Cells(3).Value=rss
DataGridView1.Rows(rowindex).Cells(4).Value=network.linkQuality
如果结束
如果结束
下一个
下一个
特例
MsgBox(例如消息)
结束尝试
Application.DoEvents()
线程。睡眠(100)
端接头
公共级WiFi
作为新WlanClient()的公共共享客户端
末级
请告诉我如何在需要时关闭客户端或处理本地声明的WlanClient。

在第一次
For
循环解决问题后,通过添加
wlanIface.Scan()
找到了答案。现在扫描正在拾取新数据