C#多线程与ping.exe合用,压缩ping的时间问题
怎样通过多线程来控制压缩这个时间在半小时左右,跪求大神的帮助,在线等答复!!!
我把我的代码贴出来!!!
#region 加载窗体
private void FrmTest_Load(object sender, EventArgs e)
{
this.lblAllUrl.Text = "所有的链接" + "【当前时间" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "】:";
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
Thread t = new Thread(new ThreadStart(ping));
t.Start();
}
#endregion
#region 加载连接对象并获得url值,然后以数组的形式返回
private string[] GetData()
{
try
{
string connString = ConfigurationManager.ConnectionStrings["connStringLocal"].ConnectionString.ToString();
SqlConnection conn = new SqlConnection(connString);
conn.Open();
string sql = "select top(10) RemoteHost,HotelName from dbo.HotelConn where UseWebSrvFlag=1";
SqlCommand command = new SqlCommand(sql, conn);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
txtAllUrl.AppendText(reader[1].ToString() + ":" + reader[0].ToString() + "," + "\r\n");
}
txtAllUrl.Text = txtAllUrl.Text.Remove(txtAllUrl.Text.LastIndexOf(','), 1);
reader.Close();
conn.Close();
strLeg = txtAllUrl.Text.Split(',');
lblAll.Text = "一共:" + strLeg.Length.ToString();
return strLeg;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
return null;
}
#endregion
#region 具体的ping方法
protected void ping()
{
try
{
ProcessStartInfo start = new ProcessStartInfo("Ping.exe");//设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到
//如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe
string[] newStrLeg = GetData(); //以 北京前门店:192.168.103.10 形式
int len = newStrLeg.Length;
for (int i = 0; i < len; i++)
{
txtCommand.Text = "";
string[] newNameStrLeg = newStrLeg[i].Split(':'); //将格式分割成:店名[0] url[1]
txtNow.Text = newNameStrLeg[1].ToString();
start.Arguments = newNameStrLeg[1].ToString();
start.CreateNoWindow = true;//不显示dos命令行窗口
start.RedirectStandardOutput = true;//
start.RedirectStandardInput = true;//
start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序
Process p = Process.Start(start);
StreamReader reader = p.StandardOutput;//截取输出流
string line = reader.ReadLine();//每次读取一行
while (!reader.EndOfStream)
{
txtCommand.AppendText(line + "\r\n");
line = reader.ReadLine();
}
p.WaitForExit();
p.Close();//关闭进程
reader.Close();//关闭流
Thread.Sleep(500);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
#endregion
相关推荐
picture3.0.rar_C#编程_C#_
简易的winform版本的ping程序,通过两种方法实现,一种是调用系统ping.exe,另一种是用.net framwork中提供的Ping类实现
Python+Tkinter实现图形化Ping工具:ICMP封装与线程界面全解析
ICMP(Internet Control Message Protocol)是网络层核心诊断协议,ping工具正是基于它来检测主机连通性与往返延迟。从原理上看,构造回显请求、计算校验和、解析应答报文,每一步都涉及对网络协议的深入理解;而将其封装为图形界面工具时,还需要解决原始套接字权限、超时处理、线程阻塞与界面刷新等工程难题。这类工具在网络故障排查、连通性监控和高校课程设计中都有广泛应用。本文以Python+Tkinter为技术栈,完整展示一个图形化ping工具的设计与实现,涵盖ICMP报文构造、基于队列
C#上位机与西门子S7协议通讯:Sharp7封装与实战指南
在工业自动化领域,上位机与PLC的通讯是数据采集与控制的核心环节。西门子S7系列PLC凭借其稳定性与广泛应用,成为产线设备的主流选择,而S7协议作为其原生通讯协议,承载着高效、低延迟的数据交换能力。理解S7协议的TSAP参数、PDU协商机制以及数据块地址映射,是开发可靠通讯程序的基础。通过C#中的Sharp7库,开发者可以绕过重型OPC UA部署,以轻量级方式实现与S7-1200/1500的直连读写,支持M、I/Q、DB区多类型数据访问。结合多线程采集、断线重连与UI安全刷新,能够构建出适合MES对接、可视
图形化Ping工具开发实战:从ICMP原理到Python GUI实现
网络连通性检测是网络运维与开发中的基础技能,而Ping命令作为最常用的检测手段,基于ICMP协议实现网络层的可达性验证。理解ICMP报文结构、往返时延与丢包率计算,是掌握网络诊断原理的关键。在工程实践中,命令行Ping存在输出可读性差、多目标监测不便等问题,因此开发一款图形化Ping工具不仅能提升操作效率,还能将协议原理与软件开发流程深度融合。借助Python Tkinter等GUI框架,可以快速构建跨平台的检测工具,实现参数配置、实时输出与统计展示,广泛适用于课程设计、网络故障排查及日常运维场景。通过多目
基于C# WinForms与Modbus RTU的温湿度监控上位机开发实战
在工业物联网与现场设备数据采集场景中,串口通信与上位机软件是连接底层传感器与管理系统的关键。Modbus RTU作为工业现场应用最广泛的协议之一,搭配RS485总线可实现多设备稳定轮询。本文以冷库温湿度监控为例,介绍使用C# WinForms构建上位机软件的全过程:从Modbus通信、寄存器解析到SQLite数据库设计、UI实时刷新,再到现场部署的常见故障排查。通过分层架构、线程模型与批量入库等工程实践,解决工业环境下的数据实时性与系统稳定性问题,为开发类似数据采集与监控系统提供可复用的参考。文章兼顾基础原



