【问题标题】:Sending ping gets my Windows 8.1 machine to crash发送 ping 会使我的 Windows 8.1 机器崩溃
【发布时间】:2021-08-20 13:49:21
【问题描述】:

我有一个 C# windows 服务应用程序,它在“foreach”循环中交互下面的代码(我有大约 300 个地址要检查) 确定是否可以通过互联网访问 IP 地址,不幸的是我得到了蓝屏 死亡,我的电脑在 Visual Studio 2019 上调试时崩溃,错误代码: 进程已锁定页面

public bool IsReachablePing()
        {
            try
            {
                using Ping p = new();
                PingReply reply = p.Send(IpAddress);
                if (reply.Status == IPStatus.Success) { return true; }
                return false;
            }
            catch (Exception) { return false; }
        }

我怎样才能让这对机器更友好,以避免服务器崩溃以防万一 我发布服务? 我很害怕在服务器上发布此服务

【问题讨论】:

  • PROCESS HAS LOCKED PAGES 表示驱动程序存在错误。那可能是与您的网络接口相关的驱动程序...

标签: c# crash windows-services ping worker


【解决方案1】:

无法通过修改代码来解决此问题,此问题是由调试期间发送 ping 引起的。您可以使用 System.Diagnostic.Debugger.IsAttached 属性来确定调试器是否已附加并禁用 ping。在这里阅读更多:C# program causes bluescreen?

【讨论】:

  • 感谢您的见解,但实际上我能够通过使用 Ping p = new(); 删除来解决此问题并添加 public Ping ping=new();到班级,基本上重新使用相同的实例
【解决方案2】:
using (Ping p = new Ping())
{
  // other code    
}

你用错了“使用”。变量 p 在你使用它时已经被释放了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多