C#-记录可用的Wifi连接(当我在车内时)

C#-记录可用的Wifi连接(当我在车内时),c#,C#,几天来,我一直在思考如何以最好的方式做到这一点。我创建了一个表单应用程序,如下所示: 我给他取名为“WiFi黑客”是为了逗他笑。但我的问题是,为什么VisualStudio在使用该程序几分钟后给我这个错误 Additional information: Type 'NativeWifi.Wlan+WlanReasonCode' cannot be marshaled as an unmanaged structure; no meaningful size or offset can

几天来,我一直在思考如何以最好的方式做到这一点。我创建了一个表单应用程序,如下所示:

我给他取名为“WiFi黑客”是为了逗他笑。但我的问题是,为什么VisualStudio在使用该程序几分钟后给我这个错误

    Additional information: Type 'NativeWifi.Wlan+WlanReasonCode' cannot be marshaled as an unmanaged structure; no meaningful size or offset can be computed.
我的程序使用NativeWifi,登录网络的代码如下:

    WlanClient client = new WlanClient();
    private void wifilister()
    {
        foreach (WlanClient.WlanInterface wI in client.Interfaces)
        {
            foreach (Wlan.WlanAvailableNetwork network in wI.GetAvailableNetworkList(0))
            {
                Wlan.Dot11Ssid ssid = network.dot11Ssid;
                string networkName = Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
                if (wifis.Contains(networkName) == false)
                {
                    //Name
                    ListViewItem item = new ListViewItem(networkName);
                    wifis.Add(networkName);
                    listBox1.Items.Add(networkName);
                    //Encryption Type
                    item.SubItems.Add(network.dot11DefaultCipherAlgorithm.ToString());
                    wifis.Add(network.dot11DefaultCipherAlgorithm.ToString());
                    //Signal
                    item.SubItems.Add(network.wlanSignalQuality + "%");
                    wifis.Add(network.wlanSignalQuality + "%");
                    //Logged Time
                    item.SubItems.Add(DateTime.Now.ToString("T"));
                    wifis.Add(DateTime.Now.ToString("T"));
                    listView1.Items.Add(item);
                    label2.Text = "Networks: " + (wifis.Count / 4).ToString();
                }
                if (checkBox2.Checked)
                {
                    label1.Text = track;
                    if (Encoding.ASCII.GetString(ssid.SSID, 0, (int)ssid.SSIDLength) == track)
                    {
                        label1.Text += " " + network.wlanSignalQuality + "%";
                    }
                }
            }
        }
我从YouTube的一个教程中得到了大部分信息,但在它记录了列表中40多个不同的网络之后,它似乎给出了一个奇怪的错误

“NativeWifi.Wlan+WlanReasonCode”


这让我很恼火,有办法解决吗?

Wifi黑客是其中一个网络上的一台计算机的名称。因此,应用程序必须尝试40个网络中的每一个,并在每个网络上ping Wifi黑客。因此,如果应用程序正在等待5秒的ping响应,那么在程序没有找到Wifi黑客之前,您需要等待200秒。该程序可能只需等待3秒即可获得每个ping响应,即40 x 3=120秒。该程序名称的可能副本是Wifi Hacker,但我不明白“每个网络上的ping Wifi Hacker?”我设置了一个1秒的计时器来运行“wifilister()”无效,可能它运行得太快了?如果这似乎是一个可能的问题,请告诉我,或者我如何解决这个问题。我对NativeWifi模块了解不多。到目前为止,它似乎尽其所能让我崩溃。我就是这么做的,我知道这听起来很愚蠢。我让我的程序每10秒关闭一次,然后重新打开以找到新的网络。然而,它在再次找到几个网络后继续崩溃?这怎么可能!是否存在需要停止/重新启动的后台ping操作?