使用Ping.net进行内存转储

本文关键字:内存 转储 Ping net 使用 | 更新日期: 2023-09-27 17:57:26

我试图在Windows窗体应用程序中对服务器执行ping操作,但当我的程序运行时,我的计算机上有内存转储。非常非常奇怪。

在我的方法中,我只有:

private void CheckServer()
{
    this.txResponse.Text = "";
    IPAddress IpAdress = IPAddress.Parse("anAdress");
    Ping ping = new Ping();
    PingReply pingToReply = ping.Send(IpAdress);
    if (pingToReply.Status == IPStatus.Success)
        txResponse.Text = pingToReply.Status.ToString();
}

我真的不明白发生了什么。我使用的是Windows 8上的Visual Studio 2012和.NET Framework 4.5。如果需要更多信息,请告诉我。

使用Ping.net进行内存转储

验证IP地址解析是否成功;否则,请检查CheckServer方法之外的周围处理。

啊,编程的乐趣在于,当代码完全没有问题时,程序就会爆炸。。。(你的代码看起来很好,除了在它周围放一个try/catch块)

这可能是硬件问题(内存、磁盘等)、坏的dll,或者晚上发生的任何事情。我想你已经试过重新启动你的电脑,并在DOS提示下ping你的服务器。如果不这样做。

您可以尝试使用您选择的命令行/ip直接同步或异步调用ping.exe,请参阅http://www.codeproject.com/Articles/25983/How-to-Execute-a-Command-in-C然后解析输出以获得您需要的内容(以"Reply from"或"Request timed out"开头的行。甚至还有%loss行。

另一个尝试是完全绕过c#PingPingReply调用,并使用网络套接字和计时器,请参阅http://sourceforge.net/projects/pingutil/?source=typ_redirect尤其是ping.cs文件。

这些解决方案可以让你围绕这个问题进行写作,但它不一定能解决手头的问题,这在你提供的代码中似乎与编程无关。

好吧,其他想法。。。1) 对您的项目进行全部重新生成2)尝试使用旧版本的.NET进行编译3)创建一个新项目并将块源复制到新创建的文件中。4) 在另一台计算机上运行该项目,看看是否得到相同的结果。任何可能生成也可能不生成的异常错误都不应导致堆芯转储。

另一种选择是分析核心转储,对于应用程序,请参阅:http://sourceforge.net/projects/core-analyzer/还可以结账用于分析java核心转储的工具

更糟的是,您可能需要重新加载Visual Studio和/或.NET.