MyException - 我的异常网
当前位置:我的异常网» C# » C#一直ping IP地址,出现界面卡死现象,求解决方案,

C#一直ping IP地址,出现界面卡死现象,求解决方案,该如何解决(4)

www.MyException.Cn  网友分享于:2013-02-20  浏览:33次


            hexing_date.Rows[i].Cells[2].Value = ppResult.RoundtripTime.ToString();
            hexing_date.Rows[i].Cells[3].Value = ppResult.Status.ToString();
            hexing_date.Rows[i].Cells[4].Value = z;
        }
      
------解决方案--------------------
把方法丢到多线程里面去

task t=task .factory.startnew(()=>{

//你的方法
});
------解决方案--------------------
你还是建个静态的变量存储ping的结果吧,然后通过另一个线程每1秒(或0.5秒)轮询这个全局变量,更新到界面上。你的卡界面是因为你每个线程都在对界面控制直接操作,你计算下你点击的次数和触发器执行的间隔,每秒有多少次界面的刷新?有必要那么频繁刷新界面吗?我们肉眼能分辨的刷新率是多少?
------解决方案--------------------
比如说700毫秒内“群p”买没有完毕,那么你这时候是不是就重复有2套群p?以此类推,很快地,机器上就有成百上千个“群p”,而且以指数速度增多。

同一时间只需要有一个“群p”就够了,弄这些多余的“群p”干什么?

在你的hexing_time_Tick中第一行,应该首先调用 hexing_time.Stop() 关闭它。然后“群p”真正全完毕之后才需要再启用定时器。

使用定时器时要注意,很多人都弄出了这种“指数堆积任务垃圾”的bug出来。
------解决方案--------------------
感觉里面的线程会很多哦,
试试就开一个线程,然后在里面循环处理。
定时器都可以放里面,
如果定时器放外面就传参数到线程中。
最后再委托回界面
------解决方案--------------------
引用:
比如说700毫秒内“群p”买没有完毕,那么你这时候是不是就重复有2套群p?以此类推,很快地,机器上就有成百上千个“群p”,而且以指数速度增多。

同一时间只需要有一个“群p”就够了,弄这些多余的“群p”干什么?

在你的hexing_time_Tick中第一行,应该首先调用 hexing_time.Stop() 关闭它。然后“群p”真正全完毕之后才需要再启用定时器……

看来是老手了,

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有