【发布时间】:2009-12-08 09:17:18
【问题描述】:
我在应用程序的主窗体上使用System.Windows.Forms.Timer 组件,该组件每分钟检查一次数据库的更新。但是,与用户有许多可能的交互,例如为某些操作抛出模式对话框。一般来说,我不希望在用户“忙”或另一个数据库操作处于活动状态时触发此计时器。
我目前的方法是用 checkDatabaseTimer.Stop()/Start() 对明确地将此类“敏感”代码块括起来(使用 try/finally 以确保在退出时始终调用 Start)。
但这对我来说似乎很笨拙:如果未来的任何编码人员对此表单的代码进行修改,他们需要记住在任何代码周围应用这个停止/开始括号,例如,提示用户输入。忘记这样做似乎很容易。
有没有更好的方法来处理这个问题?或者这只是我们必须意识到的事情,因为多线程就像用剪刀跑,你可以假装不简单和安全的事情之一?
【问题讨论】:
标签: c# multithreading timer