读书人

C#多线程与ping.exe合用压缩ping的时

发布时间: 2012-04-27 11:57:44 作者: rapoo

C#多线程与ping.exe合用,压缩ping的时间问题
我当前的程序使用的是单线程,大概4s/url,然后数据库中大概有1100条数据,算下来的话,跑完全程需要一个半小时,
怎样通过多线程来控制压缩这个时间在半小时左右,跪求大神的帮助,在线等答复!!!

我把我的代码贴出来!!!

C# code
 #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


[解决办法]
哇,好长代码,帮忙顶下,顺便学习
[解决办法]
哇,好长代码,帮忙顶下,顺便学习

读书人网 >C#

热点推荐