我有一个VS 2012项目,它有一个定时器,每隔2分钟启动一个进程。它工作正常,但似乎在项目停止后继续运行。我的唯一指示是它以定时器间隔将错误记录到数据库。我是否需要明确停止计时器?按下停止按钮后如何完成?当我关闭项目时,日志记录停止。
tick事件(RefreshBroadcast)无声地失败(当应用程序没有运行时)但是日志记录工作正常,日志记录表明它无法访问配置文件,因为它使用默认值(对于应用程序名称等) 。日志记录代码也应该在View中显示错误,因此最终Visual Studio会告诉我我的错误视图窗口“没有...标识的资源”。这将在项目停止时发生,而我正在其他地方编码。在此之后,记录到DB停止。
Public Sub New()
If Not System.Windows.Application.Current.MainWindow Is Nothing Then
_refreshBroadcastTimer = New System.Windows.Threading.DispatcherTimer()
AddHandler _refreshBroadcastTimer.Tick, AddressOf dispatcherTimer_Tick
If Debugger.IsAttached Then
_refreshBroadcastTimer.Interval = New TimeSpan(0, 0, 30)
Else
_refreshBroadcastTimer.Interval = New TimeSpan(0, 0, My.Settings.RefreshBroadcastIntervalMinutes * 60) ' change to seconds
End If
_refreshBroadcastTimer.Start()
End If
End Sub
Private Sub dispatcherTimer_Tick(sender As Object, e As EventArgs)
Try
RefreshBroadcast()
Catch ex As Exception
LogException(ex)
End Try
End Sub
答案 0 :(得分:0)
有趣的是如何提出一个问题经常给你答案,这已经困扰了我好几天,但我想我已经想到了。因为我在新建视图模型时启动了计时器,所以每当我在编辑器中打开View时,它会在后台创建一个视图模型的实例,这将从计时器开始。我想我必须包装代码,因此它不会在设计器中触发。
我已将init代码包装在
中 If Not System.ComponentModel.DesignerProperties.GetIsInDesignMode(New DependencyObject()) Then
到目前为止似乎工作正常。