VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 852|回复: 2

Process的问题

[复制链接]

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-3-6 13:30:01 | 显示全部楼层 |阅读模式
private void button1_Click(object sender, System.EventArgs e)
   {
          int i=1;
         for(i=1;i<254;i++)
         {
             string pstr="192.168.0."+i.ToString();
             string strRst = CmdPing(pstr);
              listBox1.Items.Add(pstr+"___"+strRst);
        }
   }

private static string CmdPing(string strIp)
{
     Process p = new Process();
     p.StartInfo.FileName = "cmd.exe";
     p.StartInfo.UseShellExecute = false;
     p.StartInfo.RedirectStandardInput = true;
     p.StartInfo.RedirectStandardOutput = true;
     p.StartInfo.RedirectStandardError = true;
     p.StartInfo.CreateNoWindow = true;
     string pingrst;
     p.Start();
     p.StandardInput.WriteLine("ping -n 1 "+strIp);
     p.StandardInput.WriteLine("exit");
     string strRst = p.StandardOutput.ReadToEnd();

     if(strRst.IndexOf("(0% loss)")!=-1)
        pingrst = "连接";
      else if( strRst.IndexOf("Destination host unreachable.")!=-1)
        pingrst = "无法到达目的主机";
      else if(strRst.IndexOf("Request timed out.")!=-1)
        pingrst = "超时";
      else if(strRst.IndexOf("Unknown host")!=-1)
        pingrst = "无法解析主机";
      else
        pingrst = strRst;
       p.Close();
      return pingrst;
}
以上程序执行时,listBox1中的数据不是依此显示,而是过很长时间后一起显示,时间的延迟让人不能忍受,怎样才能依此显示?
回复

使用道具 举报

0

主题

52

帖子

34.00

积分

新手上路

Rank: 1

积分
34.00
发表于 2020-5-23 22:45:01 | 显示全部楼层
使用线程处理 例如
private void button6_Click(object sender, System.EventArgs e)
{
        Thread cmdthread = new Thread(new ThreadStart(this.ThreadCmd));
        cmdthread.IsBackground = true;
        cmdthread.Start();

}

private void ThreadCmd()
{
        int i=1;
        for(i=1;i<254;i++)
        {
                 string pstr="192.168.0."+i.ToString();
                 string strRst = CmdPing(pstr);
                listBox1.Items.Add(pstr+"___"+strRst);
        }
}

private static string CmdPing(string strIp)
{
        Process p = new Process();
        p.StartInfo.FileName = "cmd.exe";
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardInput = true;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.CreateNoWindow = true;
        string pingrst;
        p.Start();
        p.StandardInput.WriteLine("ping -n 1 "+strIp);
        p.StandardInput.WriteLine("exit");
        string strRst = p.StandardOutput.ReadToEnd();

        if(strRst.IndexOf("(0% loss)")!=-1)
                pingrst = "连接";
        else if( strRst.IndexOf("Destination host unreachable.")!=-1)
                pingrst = "无法到达目的主机";
        else if(strRst.IndexOf("Request timed out.")!=-1)
                pingrst = "超时";
        else if(strRst.IndexOf("Unknown host")!=-1)
                 pingrst = "无法解析主机";
        else
                 pingrst = strRst;
        p.Close();
        return pingrst;
}
回复

使用道具 举报

1

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
 楼主| 发表于 2020-5-30 18:30:01 | 显示全部楼层
谢谢了,:)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表