日期:2014-05-17  浏览次数:21804 次

C#怎么设置while循环每一秒循环一次并统计次数
猴子我苦思一晚,,没人来解决http://bbs.csdn.net/topics/390368476

我就改了下代码,用while来循环,,但是解决了上面链接的问题后,又出现新问题,,就是怎么来控制while循环每隔一段时间循环一次,,,并在datagridview中动态显示(如1.2.3.4这样递增显示出来)
        public void hexing_ping(object obj)
        {
            
            int i = Convert.ToInt32(obj);
            
            while (ff)
            {
                     
                Thread.Sleep(500);
                
                Ping pp = new Ping();
                PingReply ppResult = pp.Send(Convert.ToString(hexing_date.Rows[i].Cells[1].Value), 10);

                hexing_date.Rows[i].Cells[2].Value = ppResult.RoundtripTime.ToString();
                hexing_date.Rows[i].Cells[3].Value = ppResult.Status.ToString();
               z++;
             hexing_date.Rows[i].Cells[4].Value = z;
            }
            
            //Thread.Sleep(500);
        }

        private Boolean ff = true;


是统计z的次数(强调下,这里是一直ping多个IP地址,我把z++放在while中后,就出现,z是在运行了多次了,并不是我想要的由1开始递增求解决方案,,是每隔一段时间运行,并把z由数字1动态显示递增,,,

------解决方案--------------------
ping的话最好用多线程,效率高,你这样ping速度很慢的,如果用多线程就没有你说的每隔一段时间显示的问题,ping有结果后就显示,
------解决方案--------------------
一定要这么做,可以这样:

        public void hexing_ping(object obj)
        {
            
            int i = Convert.ToInt32(obj);

            DateTime tmStart=DateTime.Now;
            
            while (ff)
            {
                while((DateTime.Now-tmStart).TotalSeconds<1.0) Thread.Sleep(100);