关于winform定时做事的问题

yzhxhwt 2010-08-09 05:17:06
有没有朋友遇到这样的问题。
类似于闹钟的,我在程序里设定了N个时间段,一旦到达设置的某个时间点,程序就去做某件事,我本来的想法是用设置的时间去和系统的时间不停的比较,直到到了那个时间,OK,开始做事,但是后来发现这样很影响性能,我现在的想法是C#能不能让系统给程序上抛一个消息,告诉程序到达这个时间了,可以做某个事了,这样的话会提高很多性能,不知道大家有没有遇到过。
...全文
245 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mars.xj 2010-08-10
  • 打赏
  • 举报
回复
顶 timer
longhair9711 2010-08-10
  • 打赏
  • 举报
回复
还是用定时器吧。。。。。。
yao13675863922 2010-08-10
  • 打赏
  • 举报
回复
设置timer控件就可以了。。。
ghost281536992 2010-08-10
  • 打赏
  • 举报
回复
有个问题想请教下,TIMER和多线程有关系么?为啥总要把TIMER跟多线程联系起来呢。
你提的那个需求就是用timer解决的,就算你另起一个线程,最后还是要用timer解决。
Jessezu 2010-08-10
  • 打赏
  • 举报
回复
用计时器或windows服务
yzhxhwt 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 ghost281536992 的回复:]
1.如果程序什么都不做,底层凭什么会自动上抛消息,它根本对某个特定时间一点概念都没有,所有的时间点在系统看来都是一样的,它不可能无缘无故在某个特定时间就上抛一个消息,这种信息只能你写程序去获得。
这种靠时间点触发某种逻辑的程序,最好就是timer了,它就是干这个用的,还有比这更好的吗?

2.上抛什么样的消息?windows对消息是有严格规定的,不是随便什么自定义消息都能发的。


……
[/Quote]

你的意思就是我说的意思,我的意思也是在程序里面去获取和设置这个底层提供的接口,关键我现在不知道有没有这个接口。如果用timer的话,不如用多线程了,我程序里现在已经存在9个线程了,不敢再用了
ghost281536992 2010-08-10
  • 打赏
  • 举报
回复

1.如果程序什么都不做,底层凭什么会自动上抛消息,它根本对某个特定时间一点概念都没有,所有的时间点在系统看来都是一样的,它不可能无缘无故在某个特定时间就上抛一个消息,这种信息只能你写程序去获得。
这种靠时间点触发某种逻辑的程序,最好就是timer了,它就是干这个用的,还有比这更好的吗?

2.上抛什么样的消息?windows对消息是有严格规定的,不是随便什么自定义消息都能发的。



yzhxhwt 2010-08-10
  • 打赏
  • 举报
回复
没有可以让底层自动上抛消息的方法?
yzhxhwt 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 ghost281536992 的回复:]
你说的那种逻辑只是编程人员在需要的情况下人为地添加了一个工作线程,不起timer它照样能工作,跟timer一点关系没有。

如果精确到时间点的话,记下时间差的方法如何能够保证那个点到达了你能发现呢?
比如说你想让程序在12:00的时候做点什么,然后13:00的时候做点什么,难道准备sleep一个小时吗?那大可以把timer的interval设置成一个小时嘛。
[/Quote]

非常感谢你的关注,可能我的表述不是很清楚,看了这篇文章,你应该可以理解我想的了
http://blog.csdn.net/xfantasy/archive/2010/06/19/5680514.aspx

目前问题到此已经解决。非常感谢
ghost281536992 2010-08-10
  • 打赏
  • 举报
回复
你说的那种逻辑只是编程人员在需要的情况下人为地添加了一个工作线程,不起timer它照样能工作,跟timer一点关系没有。

如果精确到时间点的话,记下时间差的方法如何能够保证那个点到达了你能发现呢?
比如说你想让程序在12:00的时候做点什么,然后13:00的时候做点什么,难道准备sleep一个小时吗?那大可以把timer的interval设置成一个小时嘛。
yzhxhwt 2010-08-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 ghost281536992 的回复:]
有个问题想请教下,TIMER和多线程有关系么?为啥总要把TIMER跟多线程联系起来呢。
你提的那个需求就是用timer解决的,就算你另起一个线程,最后还是要用timer解决。
[/Quote]

哥们,timer和多线程是要扯到一起的,如果单独的timer,你想想,肯定是需要不停的比对时间,而如果用多线程的话,先记下系统和当前时差,然后用线程去sleep这个时差,就不需要不停的比对了,这样大大提高了效率
周药师 2010-08-10
  • 打赏
  • 举报
回复
計時器 本省就影響性能
用線程吧
ZengHD 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jayinit 的回复:]

涉及委托吗
[/Quote]

不涉及,可以直接使用Timer控件,间隔设置长一点就行了
shun_qizi_ran 2010-08-09
  • 打赏
  • 举报
回复
试试让一个后台线程sleep规定时间行不行?
angelshuimo 2010-08-09
  • 打赏
  • 举报
回复
学习中。。。
axzs7878 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jayinit 的回复:]
涉及委托吗
[/Quote]
每次都被你抢沙发了! - -!
xxiju203 2010-08-09
  • 打赏
  • 举报
回复
这样的话肯定是要一个定时器去轮询的,推荐用System.Timer
yzhxhwt 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 chazikai24 的回复:]
引用 3 楼 yzhxhwt 的回复:
感谢楼上2位的关注,其实就把他想像成闹钟就行了,我只是想让系统来上抛事件给我,我不停的读取时间去比对,太耗资源了,3楼说的计划任务啥意思?我是在程序里调用程序里的方法.

3楼的意思是把程序写好之后添加exe到系统的计划任务里,按照设定的时间自动执行。
[/Quote]

这样肯定不行,我的意思A方法调用B方法,不是exe文件
chazikai24 2010-08-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yzhxhwt 的回复:]
感谢楼上2位的关注,其实就把他想像成闹钟就行了,我只是想让系统来上抛事件给我,我不停的读取时间去比对,太耗资源了,3楼说的计划任务啥意思?我是在程序里调用程序里的方法.
[/Quote]
3楼的意思是把程序写好之后添加exe到系统的计划任务里,按照设定的时间自动执行。
yzhxhwt 2010-08-09
  • 打赏
  • 举报
回复
感谢楼上2位的关注,其实就把他想像成闹钟就行了,我只是想让系统来上抛事件给我,我不停的读取时间去比对,太耗资源了,3楼说的计划任务啥意思?我是在程序里调用程序里的方法.
加载更多回复(2)

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧