将Timer类从java转换为c#:调度任务

发布于 2024-08-02 00:57:41 字数 310 浏览 3 评论 0原文

我正在将应用程序从 Java 移植到 C#,但遇到了与 java.util.Timer 和 System.Threading.Timer 之间的不同行为和功能相关的问题>。 事实上,在 Timer 类的 Java 版本中,有一个用于调度任务的功能(在原始代码中使用),而 .NET 版本中没有该功能,可以在以下位置调度一个任务(通过委托函数):一次。

有没有解决方案,甚至是一个小的类集来实现该功能?

我注意到存在几个调度库(一个例子是 Quartz),但我更喜欢一个能够最大限度地减少要使用的代码量的解决方案。

谢谢你们! :)

I'm porting an application from Java to C# and I'm facing a problem connected to the different behaviors and features between the java.util.Timer and System.Threading.Timer.
In fact, in the Java version of the Timer class there's a feature (used in the original code) for scheduling tasks, that is not present in the .NET version, where it is possible to schedule one task (through a delegate function) at a time.

Is there a solution, even a small class-set to implement the feature?

I've noticed the existence of several scheduling libraries (an example is Quartz), but I would prefer a solution which would minimize the amount of code to use.

Thank you all! :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丶视觉 2024-08-09 00:57:41

您可以使用任何计时器类。 对于每个计划任务,创建一个新的计时器类,然后将 Interval 属性设置为 (ScheduledTime - DateTime.Now).TotalMilliseconds 并设置 AutoReset > 属性设置为 false(或者在 Tick 事件的代码隐藏中将 Enabeld 属性设置为 false)。 这将在指定的 ScheduledTime 执行一次您的代码。

You can just use any timer class. For each scheduled task, create a new timer class and just set the Interval property to (ScheduledTime - DateTime.Now).TotalMilliseconds and set the AutoReset property to false (or the Enabeld property to false in the code-behind for the Tick event). That will execute your code once at the specified ScheduledTime.

苍风燃霜 2024-08-09 00:57:41

.NET 中至少有 4 个计时器。 您的简短回答:使用 System.Threading.Timer。 我建议您在此处阅读有关计时器的信息,以及研究 System.Windows.Threading.DispatchTimer(WPF 的一部分),它可以在特定时间调度事件,但在 UI 线程上执行此操作。

There are at least 4 timers in .NET. Your short answer: use System.Threading.Timer. I'd recommend reading about the timers here here, as well as looking into System.Windows.Threading.DispatchTimer (part of WPF) which can dispatch events at particular times, but does so on the UI thread.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文