用于在 C# 中调度任务的 TaskScheduler 与 Timer:何时使用?
TaskScheduler vs Timer for scheduling tasks in C#: When to use?
最近正在研究和尝试C#
,关于C#
中的任务调度,我有一些困惑需要解决。
根据我的了解,我了解到C#中的任务调度可以通过使用Timer
和TaskScheduler
来完成。
我关注了这些文章:create task scheduler using TaskScheduler class,
create task scheduler using Timers
所以我的困惑是什么时候我们应该真正使用 Timer
和 TaskScheduler
来安排任务?
谢谢!
忘记 C# 中的 TaskScheduler
class,它与 任务 在 线程池上安排的方式有关,但不要与 Windows Task Scheduler 混淆,运行 的代码在 Windows 操作系统上并且不可知到它所用的语言。
所以你剩下的是
Timers
(不太适合长时间精确调度)。
Tasks
有延迟(需要大量工作才能准确地创建实际时间表)。
- 其他奇特的东西,例如 Reactive Extensions(与上面类似)。
- 作业调度框架(如quartz.net),它为您提供了将任务调度到 运行 一次或在任何时间范围内定期执行的所有工具以及您希望在 C# 中使用的任何类型的日程安排。
对于初学者来说,计时器可能是您想要的地方。
最近正在研究和尝试C#
,关于C#
中的任务调度,我有一些困惑需要解决。
根据我的了解,我了解到C#中的任务调度可以通过使用Timer
和TaskScheduler
来完成。
我关注了这些文章:create task scheduler using TaskScheduler class, create task scheduler using Timers
所以我的困惑是什么时候我们应该真正使用 Timer
和 TaskScheduler
来安排任务?
谢谢!
忘记 C# 中的 TaskScheduler
class,它与 任务 在 线程池上安排的方式有关,但不要与 Windows Task Scheduler 混淆,运行 的代码在 Windows 操作系统上并且不可知到它所用的语言。
所以你剩下的是
Timers
(不太适合长时间精确调度)。Tasks
有延迟(需要大量工作才能准确地创建实际时间表)。- 其他奇特的东西,例如 Reactive Extensions(与上面类似)。
- 作业调度框架(如quartz.net),它为您提供了将任务调度到 运行 一次或在任何时间范围内定期执行的所有工具以及您希望在 C# 中使用的任何类型的日程安排。
对于初学者来说,计时器可能是您想要的地方。