怎么让进程不等待执行结束?

iloli 2009-10-02 05:52:15
我做了一个很简单通过进程调用DOS的PING命令
如果PING的IP对象都正常,那程序会很快。但现在如果有某个IP地址PING不通的话,进程就会卡一下,要等待到DOS里出现Request timed out.(一般是五秒,可以PING一个不存在的地址就知道这个时间)。这样很烦。我用了定时器,每十秒执行一次这个进程,但现在它一个地址PING不通就卡五秒,二个就卡十秒。在这期间整个程序界面都处于卡死状态不能操作。有什么办法可以解决吗?

以下是这个进程的代码:


private string CmdPing(string strip)
{
// 实例一个Process类,启动一个独立进程
Process p = new Process();

// 设定程序名
p.StartInfo.FileName = "cmd.exe";
// 关闭Shell的使用
p.StartInfo.UseShellExecute = false;
// 重定向标准输入
p.StartInfo.RedirectStandardInput = true;
// 重定向标准输出
p.StartInfo.RedirectStandardOutput = true;
//重定向错误输出
p.StartInfo.RedirectStandardError = true;
// 设置不显示窗口
p.StartInfo.CreateNoWindow = true;

//启动进程

string pingrst;

p.Start();

//让进程执行CMD命令
p.StandardInput.WriteLine("ping -n 1 " + strip);

p.StandardInput.WriteLine("exit");


//从输出流获取命令执行结果
string strRst = p.StandardOutput.ReadToEnd();

if (strRst.IndexOf("(0% loss)") != -1)
pingrst = "连接";
else pingrst = "异常";


p.Close();

return pingrst;

}

...全文
283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sohighthesky 2009-10-04
  • 打赏
  • 举报
回复
多线程就可以解决了,
winslow 2009-10-04
  • 打赏
  • 举报
回复
再开一个进程
ctwei86 2009-10-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ctwei86 的回复:]
C# codeprivatestaticstring pingResult(string str)
{
Ping ping=new Ping();
PingReply reply= ping.Send(str,1000);if (reply.Status== IPStatus.Success)
{return"连接成功!";
}else
{return"连接失败!";
}
}
试试看吧!其中ping.Send()方法为等待的毫秒数,我这设置成1000毫秒即1秒钟如果连不上就返回失败!建议最好再加上2楼说的,用线程去做,这样就更灵活了。
[/Quote]
改个错,ping.Send()方法的第二个参数为等待的毫秒数。
ctwei86 2009-10-02
  • 打赏
  • 举报
回复
private static string pingResult(string str)
{
Ping ping = new Ping();
PingReply reply = ping.Send(str, 1000);
if (reply.Status == IPStatus.Success)
{
return "连接成功!";
}
else
{
return "连接失败!";
}
}

试试看吧!其中ping.Send()方法为等待的毫秒数,我这设置成1000毫秒即1秒钟如果连不上就返回失败!建议最好再加上2楼说的,用线程去做,这样就更灵活了。
a8352081 2009-10-02
  • 打赏
  • 举报
回复
我以前想做一个扫描IP的,连接时能连就很快,不能连就等半天,后来我把每个测试连接的代码分别放在独立的线程里,效果是有,能连的一下就出来了,不过后来想想,那也是治标不治本,自己骗自己,就算了,嘿嘿

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧