C#多线程ping

标签 c# multithreading ping

我正在开发一个网络监控应用程序,它可以对(未知)数量的主机执行 ping 操作。到目前为止,我有下面的代码。我创建了一个类 PingHost 并带有一个函数 zping 并且我在定时器的帮助下每 2 秒调用它一次让 2 次 ping 完成,即使一个其中有 TimedOut。但我认为更好的解决方案是为每个 ping 生成一个新线程,这样每个主机的 ping 将是独立的。

谁能告诉我怎么做?

namespace pinguin
{
    public partial class Form1 : Form
    {
        public Form1()
        {

            InitializeComponent();


        }

        private void timer1_Tick(object sender, EventArgs e)
        {

            PingHost caca = new PingHost();
            PingHost caca1 = new PingHost();
            this.label1.Text = caca.zping("89.115.14.160");
            this.label2.Text = caca1.zping("89.115.14.129");



        }

    }

    public class PingHost
    {


        public string zping(string dest)
        {
            Application.DoEvents();
            Ping sender = new Ping();
            PingOptions options = new PingOptions();
            options.DontFragment = true;

            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes(data);
            int timeout = 50;
            int failed = 0;
            int pingAmount = 5;
            string stat = "";
            PingReply reply = sender.Send(dest, timeout, buffer, options);
            if (reply.Status == IPStatus.Success)
            {
                stat = "ok";
            }
            else
            {
                stat = "not ok!";
            }



            return stat;
        }
    }
}

最佳答案

如果您使用 .NET 4,则可以使用 Parallel.Invoke .

关于C#多线程ping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5218879/

相关文章:

java - 具有部分唤醒锁的后台重复线程的android服务

c# - 运行具有连续值返回的多个线程(ping 程序)

Python ping 脚本在第一次尝试时总是失败

java - 我如何解析 Ping 请求(字符串)的 Ping 时间(整数)?

c# - ObservableCollection 不更新 ListView

c# - 由 MS Excel 和 COM 托管的 C#2 中的委托(delegate)中的异常行为

java - 关于 Swing GUI 中的线程

java - Android - 什么是处理程序消息?

c# - C#-OutOfMemoryException将列表保存在JSON文件中

c# - 从 Web API 2 响应中删除 Cookie