WinForm 应用程序中的后台进程(定期“服务”)
在 WinForm 项目中设置每 10 分钟运行一次的后台进程的最佳实践是什么?是要使用表单之外的后台人员吗?或者是否有一种更通用的方法可以应用于更多的项目样式?
也许我应该在该行之前调用一些代码:
Application.Run(new Form1());
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通常,如果您希望 Windows 窗体应用程序定期运行某些代码,请使用 Windows.Forms.Timer 是处理通知的适当方法。
然而,正如您似乎已经意识到的那样,这将要求您启动并运行一个表单,并将您与 Windows 表单基础结构联系起来。
另一种替代方法是使用 System.Threading。 Timer 类,它在后台线程上通知您。但是,如果您使用这种方法,并且希望“进程”与用户界面进行交互,则需要使用某种形式的同步。最好的平台中立方法(适用于 Windows Forms + WPF)是使用 SyncrhonizationContext 封送回 UI 线程(如果需要)。
Typically, if you want a Windows Forms application to run some code on a regular interval, using a Windows.Forms.Timer on one of your forms is an appropriate way to handle the notifications.
However, as you seem to have realized, this will require you to have a form up and running, and tie you to the Windows Forms infrastructure.
Another, alternative, approach would be to use a System.Threading.Timer class, which notifies you on a background thread. However, if you use this approach, you'll need to use some form of synchronization if you want your "process" to interact with the user interface. The best platform neutral approach (works with Windows Forms + WPF) would be to use SyncrhonizationContext to marshal back to the UI thread, if required.
您可以使用任务计划程序来计划应用程序。
如果您想在应用程序中使用计时器,您可以使用计时器或使用库,例如 Quartz.NET
You can use Task Scheduler to schedule an application.
If you want to have a timer in your application you can either use a timer or use a library such as Quartz.NET