所以我正在研究别人的调度程序类型程序的代码。他创建了一个计时器,每隔10秒运行一次,以检查计划列表,看是否有必要运行。我修改了更新Schedule.button.forecolor,具体取决于是否有计划或当前正在运行(分别为黄色和绿色)。计时器的代码位于计划表单文件
中问题是在项目启动时调用计时器,这可以确保用户不必实际单击调度程序表单来实际启动计时器。但是当在启动时调用此计时器时,因为计时器位于表单代码上,所以使用此表单的实例来启动计时器。当然,稍后在访问页面时,它是一个不同的实例,因此按钮不会更新。
如何解决此问题?我应该重构旧代码以将计时器实例分离到另一个文件中,然后调用它吗?或者有更好的方法在启动时启动计时器吗?
答案 0 :(得分:2)
为了single responsibility,我建议从所有UI中分离计时器代码。您可以在适当的时间(在计时器类中)引发自定义CheckForUpdates事件,该事件会在需要按钮更新的每个掩码/实例中被捕获。
这使得您的代码也更具可扩展性。
编辑:您的项目中是否隐含了数据库?在我看来,如果有任何任务要运行,计时器会每十秒检查一次。如果此检查是服务器端,则会更有效。每次必须运行任务时,服务器都会向客户端发送一条消息。