我有一个奇怪的问题,我似乎无法弄明白。我有一个计时器,每隔3秒运行一次,并将按钮颜色更改为黄色,黑色或绿色,具体取决于是否有待处理的计划,没有计划或当前正在运行的计划。
当我进入调试模式并添加计划或进行一次运行时,它在我的计算机上工作正常,它会改变它应该的颜色。我把这个程序放到虚拟机上并使用相同的数据参数制作相同的计划,但按钮不会改变颜色。我在两台机器上安装了.net 4.0。
Public Sub createTimer()
buttonTimer = New Timer()
buttonTimer.Start()
buttonTimer.Interval = 3000
AddHandler buttonTimer.Tick, AddressOf buttonTimer_Tick
加载页面时,从runonce函数调用createTimer()。
Public Sub buttonTimer_Tick(sender As Object, e As EventArgs)
If Scheduler.AutomationRunning = True Then
btnAutoStartMenu.ForeColor = Color.Green
ElseIf Scheduler.AutomationRunning = False And Automation.ScheduleList.Count > 0 Then
btnAutoStartMenu.ForeColor = Color.Yellow
ElseIf Scheduler.AutomationRunning = False And Automation.ScheduleList.Count = 0 Then
btnAutoStartMenu.ForeColor = Color.Black
End If
我想知道它可能是一个dll我不包括在安装程序中?但颜色变化似乎很容易内置到.net框架中,所以两者都应该使用4.0来处理这个问题吗?
编辑: 此外,在另一个虚拟机实例上尝试了它,同样的问题仍然存在。
答案 0 :(得分:0)
@RoadBump是正确的。如果Scheduler
为Nothing
会怎样?
你应该通过添加一些错误处理来获得更多线索:
Try
If Scheduler.AutomationRunning = True Then
btnAutoStartMenu.ForeColor = Color.Green
ElseIf Scheduler.AutomationRunning = False And Automation.ScheduleList.Count > 0 Then
btnAutoStartMenu.ForeColor = Color.Yellow
ElseIf Scheduler.AutomationRunning = False And Automation.ScheduleList.Count = 0 Then
btnAutoStartMenu.ForeColor = Color.Black
End If
Catch ex as Exception
btnAutoStartMenu.ForeColor = Color.Red
End Try
因此,如果您的按钮变红,那么您需要开始进一步的调查