社区
C#
帖子详情
单线程实现类似Timer的间隔处理
dotnetbus
2007-07-31 04:00:01
Timer应该是多线程的,每到一定的时间就触发事件,不会管上一次执行是否成功
时间间隔大概为30秒
现在做法是建立一个线程,然后处理事件,
处理完后sleep 30 秒
问题在于窗体会不再响应,看任务管理器
应用也会显示没有反应
感觉好像性能不高效,有什么好的方法没有?
...全文
314
9
打赏
收藏
单线程实现类似Timer的间隔处理
Timer应该是多线程的,每到一定的时间就触发事件,不会管上一次执行是否成功 时间间隔大概为30秒 现在做法是建立一个线程,然后处理事件, 处理完后sleep 30 秒 问题在于窗体会不再响应,看任务管理器 应用也会显示没有反应 感觉好像性能不高效,有什么好的方法没有?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
neucf
2007-08-01
打赏
举报
回复
用BackgroundWorker 或者 线程池,你的UI就不会死了
dotnetbus
2007-08-01
打赏
举报
回复
现在用的是和hbcbsxw一样
不过如果在UI的一个button事件中用thread = New Threading.Thread(AddressOf 你的函数名字)
那么你的UI就会没有回应了
所以我担心死循环会不会影响到CPU的性能
不过毕竟我还让线程 Sleep 了 30 秒
这个是不是最佳的
xwk789xwk
2007-07-31
打赏
举报
回复
不懂,帮顶
hbcbsxw
2007-07-31
打赏
举报
回复
哦,我忘记了,这个是用vb.net写的;不过c#和这个差不多;大同小异
hbcbsxw
2007-07-31
打赏
举报
回复
呵呵,今天刚好了一个跟这个差不多的东西,拿出来分享一下
thread = New Threading.Thread(AddressOf 你的函数名字)
此处省略........
While True
...........................
System.Threading.Thread.CurrentThread.Sleep(3000)
End While
此处省略........
把你的代码写在这个死循环里面,它就每隔30秒执行一次你想要做的事情啦
Koala_sea
2007-07-31
打赏
举报
回复
我感觉还是用委托比较好些。
通者归来
2007-07-31
打赏
举报
回复
用单独线程比较好。或用线程池。
xuan.ye
2007-07-31
打赏
举报
回复
neucf()
---
同意,调用的应该是一个委托,其他的不一定能执行
neucf
2007-07-31
打赏
举报
回复
看了一下,说几点想法:
1. 不应该在UI线程Sleep 30s,这样会让你的UI无响应。
2. 建议在UI线程外单起一个工作线程,方法可以用
(1) BackgroundWorker类,.NET 提供的专门用于做后台工作的类
(2) 直接new Thread(),效果一样,不过没有BackgroundWorker类那么好控制。
3. 如果用Timer,建议用以下方式试试:
(1) 写一个delegate,将你的操作写在其中
(2) 起一个Timer,每30秒去触发这个delegate,需要注意的是这个delegate最好用异步形式(BeginInvoke)
以上属于个人看法,仅供参考
C#中Forms.
Timer
、
Timer
s.
Timer
、Threading.
Timer
的用法分析
本文详细分析了.NET Framework中的三种
Timer
:Forms.
Timer
(
单线程
计时器)、
Timer
s.
Timer
(多线程计时器)和Threading.
Timer
(多线程计时器)。Forms.
Timer
基于Windows消息循环,适用于UI操作,但可能导致UI假死;
Timer
s.
Timer
使用Elapsed事件,多线程执行,避免UI假死;Threading.
Timer
则通过回调方法
实现
,由线程池提供服务,适合非UI线程操作。
Timer
单线程
的缺陷 用ScheduledExecutorService替代
本文分析了
Timer
在管理延时任务时存在的缺陷,如
单线程
导致的任务执行冲突以及异常时停止所有任务运行的问题。通过示例展示了ScheduledExecutorService如何有效解决这些问题,提供更可靠的定时任务执行,并指出ScheduledExecutorService在系统时间改变时的执行稳定性优于
Timer
。
C# 三个
Timer
本文详细介绍了C#中的三种计时器:System.Windows.Forms.
Timer
、System.
Timer
s.
Timer
和System.Threading.
Timer
,对比了它们的特点、适用场景及使用示例,帮助开发者选择最适合的计时器。
.NET中的
Timer
本文解析了.NET平台上的三种定时器:System.Threading.
Timer
适用于后台任务;System.Windows.Forms.
Timer
与UI线程关联;System.
Timer
s.
Timer
则基于线程池。讨论了
单线程
与多线程定时器的问题及解决方案。
Timer
定时器详解
本文介绍了 Java 中
Timer
类的功能及使用方法,包括其
单线程
特性、任务调度方式及不同执行模式。详细解析了 schedule 方法及其参数配置,并强调了异常
处理
的重要性。
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章