永发信息网

C#如何在BackgroundWorker 后台线程中使用定时器?

答案:2  悬赏:40  手机版
解决时间 2021-04-02 21:33
C#如何在BackgroundWorker 后台线程中使用定时器?
最佳答案
Timer会导致窗体反应异常?
可能是你代码的问题吧?
你把代码给我看看?

其它的Timer跟Forms的Timer其实基本差不多
你也可以尝试用Thread执行一个无限循环的方法,比如:
while(true){
做事的代码
Thread.Sleep(1000);// 休眠一秒
}
全部回答
实际上,Timer并不只有你说的System.Windows.Forms.Timer一种。这个东西作为一个主线程(即UI线程)的控件,它的执行都会在UI线程,当然会造成线程阻塞,也就是你说的窗体未响应。
你可以尝试使用System.Threading.Timer,它可以实现控件Timer的一切功能。另外,和你说的System.Widnows.Forms.Timer不一样的是,它可以定义在非主线程中,当然它的定时执行方法也就不会影响到主线程了。
使用方法如下。
System.Threading.Timer timer = new System.Threading.Timer();//初始化
timer.Interval = 1000; //定时间隔1000ms
timer.Elapsed+=new EventHandler(timer_Elapsed);
private void timer_Elapsed()
{
//这里的代码每隔1秒时间就会运行,写你定时执行的事件即可
//并且,每次代码执行到这里,其实.NET内部都是用新的线程来处理这部分代码的
}
你将上面的东西封装成一个方法,注册到BackgroundWorker中,UI就不会假死的。
实际上,要在UI上定时调用异步,并且解决UI的假死,还有其他的方法,BackgroundWorker并不是唯一的选择。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
居住法国十年,且懂法语.有一定的经济来源.能
3Dmax怎么做电炉丝模型
爸妈我想对您说500字
有没有一些画风和剧情都类似空罐少女的动漫
在1分钟内使用16 20 19 3 & 10随意用加减乘除
故意抢夺损害他人财产3000以上什么罪
三年级作文《玩中的乐趣》怎么写
有多少造价,5万平米建筑面积有多少造价知识
论辈分我该怎么叫?
PS3 2512 2112 区别
石姓男孩五行缺水取个男孩名字!出生日期农历
世界最著名的哲学家有哪些?
监狱20项指标是什么意思
网页里H标签怎样添加?
洪嘉馨的姓名测试评分
推荐资讯
如何选择面试班?
跟男朋友处了好长时间了 接近4年了
如何更改贴吧名字
有两捆电线,一捆长120m ,比另一捆短1/3
不与花争艳,凌寒伴雪吟.寄言纨绔子,莫扰我
亮碧思公司合法吗?不合法为什么九九年在香港
琳喜欢卡卡西吗
gtx780m,4g显存跟gtx870m,6g显存选哪个
Qingdao lies the west of the Pacific Ocean
三峡大坝在宜昌的下游还是上游?
五行: 火金 水木 土金 金火,这是水、木、土
王文后面加什么字好
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?