背景投票

时间:2016-06-14 16:14:17

标签: c# .net multithreading

我正在处理一个简单的系统托盘应用程序。它没有任何主窗口,只有系统托盘中的图标,右键单击上下文菜单(重新)启动/更新第三方应用程序。它将继续轮询远程位置以检查是否有可用的新版本,如果有,则更改其图标颜色以通知用户,以便可以右键单击然后更新,更新完成后颜色将恢复正常直到检测到另一个更新。轮询过程一直在运行,直到主应用程序关闭。

系统托盘部分看起来很简单,我不太确定实施后台轮询过程的最佳做法,我想它不应该在主/ UI上运行线程阻止任何右键单击操作。什么是ThreadPool.QueueUserWorkItems,Dispatcher,BackgroundWorker,Task或async-await之间的最佳选择(不确定是否合适)

感谢。

编辑:投票不是很好我完全明白了,但在我的情况下它确实是不可避免的,例如,想象它通过ping其心跳api来监控网络服务并且它每10次ping一次分钟..

1 个答案:

答案 0 :(得分:1)

为了回答你的精神问题,你提到的所有选项都或多或少是有意的,非常适合于具有定义的开始和结束的各种相对较短的运行作业。在列出的选项中,“BackgroundWorker”是最接近的选项,但它也适用于可以报告进度和结束的作业。如果您确实需要在应用程序的整个生命周期中一直运行的东西,那么您应该创建并管理专用的线程。

所有对Cody说的话都考虑过只是检查启动?如果定期检查是必须的设置,定时器在一个间隔内执行它可能是一个不错的选择。

相关问题