有没有一种方法可以用一个给定的动作构建一个新的定时器,但是从一开始就告诉它必须在一个小时后自行终止? (它可以自己工作或我需要另一条线来处理?)只需要一个定时器,用于应用程序生命周期的第一个小时
回答
我会使用两个计时器,一个做任何你想要的,另一个杀死一小时后的第一个计时器。
以下是两个示例,每个示例都使用1秒钟的主定时器,需要在第5秒钟后终止。
如果您正在使用System.Threading.Timer:
Timer actualTimer = new Timer(obj => Console.WriteLine("Timer!"),
null, 0, 1000);
Timer killingTimer = new Timer(obj =>
{
Console.WriteLine("Killing timer!");
// Set the dueTime and timeout to infinite, to stop the timer.
actualTimer.Change(Timeout.Infinite, Timeout.Infinite);
killingTimer.Change(Timeout.Infinite, Timeout.Infinite);
}, null, 5000, 5000);
Console.ReadLine();
如果您正在使用System.Timers.Timer:
Timer actualTimer = new Timer();
actualTimer.Interval = 1000;
actualTimer.Elapsed += (sender, e) => Console.WriteLine("Timer!");
actualTimer.Start();
Timer killingTimer = new Timer();
killingTimer.Interval = 5000;
killingTimer.Elapsed += (sender, e) =>
{
Console.WriteLine("Killing timer!");
actualTimer.Stop();
killingTimer.Stop();
};
killingTimer.Start();
时间以毫秒(1000秒)。根据this post,System.Threading.Timer
是优选的,但System.Timers.Timer
适用于根据this post可以从不同线程调用定时器的方法的情况。
你也想杀死杀戮者! – usr 2012-08-12 12:00:26
谢谢Virtlink和usr。它工作,它是一个整洁的解决方案(我希望它是在构造函数 - 但这也是很好的) – user1025852 2012-08-12 12:25:22
另一个问题 - 我应该期待同步问题?例如杀死计时器会杀死某些关键部分中的实际计时器,并抛出异常? – user1025852 2012-08-12 13:38:39
- 1. EF代码第一个用于web应用程序的DBContext生命周期
- 2. 第一个servlet/jsp应用程序,只需要一些说明
- 3. 在整个应用程序生命周期中只调用一次方法
- 4. 生命周期方法杀死一个应用程序?
- 5. 寻找一个应用程序生命周期管理工具
- 6. ASP.NET应用程序生命周期 - 非页面生命周期
- 7. 在应用程序的生命周期的另一个时间要求远程通知授权?
- 8. 一个进程的生命周期ios
- 9. iphone应用程序的生命周期?
- 10. 服务运行时的应用程序类生命周期
- 11. Asp.NET Global.asax - 应用程序生命周期
- 12. Tomcat应用程序生命周期
- 13. 创建包时需要第一个定时器的帮助
- 14. dispatch_once每个应用程序的负载或应用程序的生命周期?
- 15. 适用于应用程序生命周期任务的GCD dispatch_async?
- 16. 管理实时磁贴和应用程序生命周期
- 17. VB.NET:在应用程序的生命周期中只运行一次方法
- 18. 仅在第一次打开应用程序时需要密码
- 19. 管理一个活动的生命周期的持续时间
- 20. 需要一种方法在小时前许可应用程序
- 21. 单个用户应用程序的整个生命周期中的一个活动IB事务
- 22. “需要SSL”如何影响ASP.NET MVC应用程序生命周期?
- 23. 反应状态生命周期为一个过滤器组件
- 24. 为什么这个Rust类型别名需要一个生命周期参数?
- 25. 不可违反:injectTapEventPlugin():每个应用程序生命周期只能调用一次
- 26. Java:使用定时器周期性地运行一个方法
- 27. 另一个C++临时生命周期混淆
- 28. 我们只需要一个服务在一个Android应用程序?
- 29. 在使用统一的asp.net MVC2中,我的程序是否需要管理容器的生命周期?
- 30. DSP32C没有定时器,但需要一个定时器实现
这是WinForms? WPF?还有别的吗?你使用什么计时器?你可以发布你的一些代码吗? – 2012-08-12 08:33:45
我有两个性能计数器。每秒更新一个,但另一个每小时更新一次。所以,在第一个小时看到一部分计数器为零并不是很好。考虑到纯粹的C#4.0问题 - 我如何计时一个动作,并确保一小时后停止它?我不想自己开始管理它... – user1025852 2012-08-12 08:40:56