关于System.Timers.Timer的一个疑问

qq43695548 2011-11-19 10:51:22
 关于System.Timers.Timer,有个疑问。

假如我把执行频率设为1s

但是我在timer事件中放入了很多代码,完整地执行一次需要很长时间,比如说是10s

那么,timer事件是先执行完我的代码之后再进入下一次timer

还是到时间之后(1s)直接执行下一次timer事件?
...全文
164 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq43695548 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chen_ya_ping 的回复:]

为何你部定义你的timer执行间隔变久一点呢?
[/Quote]

只是举个极端的例子
chen_ya_ping 2011-11-19
  • 打赏
  • 举报
回复
为何你部定义你的timer执行间隔变久一点呢?
ASPNETCHENGXU 2011-11-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 starfd 的回复:]

1s后直接分配
如果你要执行完了在等1s才执行下一次
可以在线程池内分配一个线程,该线程永远都在循环
C# code
while(true)
{
Thread.Sleep(1000);
//code
}
[/Quote]
++1
  • 打赏
  • 举报
回复
别搞什么线程阻塞Sleep,那是不太懂线程编程的一开始学一些概念用的。如果你真的编写多线程程序,当然要避免阻塞。就好象有1000人“同时”在他们各自的客户端上访问一个系统前端,那么服务器通常只要占用十几个线程就可以了,有些人竟然设计出占用1000多线程的服务程序,这就是非常糟糕的程序。
  • 打赏
  • 举报
回复
System.Timers.Timer既有可能是窗体管理线程的,也可能是系统线程的。如果它的SynchronizingObject
属性设置了之,则会使用这个对象创建线程。具体请看msdn。

因此,它既有可能在窗体消息“泵”中排队执行,也有可能是真正的并发多线程的。都有可能!
  • 打赏
  • 举报
回复
1s后直接分配
如果你要执行完了在等1s才执行下一次
可以在线程池内分配一个线程,该线程永远都在循环
while(true)
{
Thread.Sleep(1000);
//code
}
弦弦 2011-11-19
  • 打赏
  • 举报
回复
他是按单线程执行的,如果你time中执行很费时的操作,他要等到你执行完才执行第二次
  • 打赏
  • 举报
回复
直接在线程池内分配线程

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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