VB.NET服务跳过子过程

VB.NET服务跳过子过程,vb.net,service,vb.net-2010,Vb.net,Service,Vb.net 2010,我正在使用Visual Studio 2010在VB中编写Windows服务。该服务大约每分钟检查一次数据库中表的更改。我有使用VB6的经验,但对VB.NET和创建服务都是新手,所以我可能忽略了一些显而易见的东西。当服务停止、暂停、启动或恢复时,应该调用一个子过程。问题是程序跳过对子过程的调用。我在OnPause和OnContinue上设置断点,并逐步遍历代码,以确认程序正在跳过对AgentStopped和AgentStarted的调用。我做错了什么 Protected Overrides Su

我正在使用Visual Studio 2010在VB中编写Windows服务。该服务大约每分钟检查一次数据库中表的更改。我有使用VB6的经验,但对VB.NET和创建服务都是新手,所以我可能忽略了一些显而易见的东西。当服务停止、暂停、启动或恢复时,应该调用一个子过程。问题是程序跳过对子过程的调用。我在OnPause和OnContinue上设置断点,并逐步遍历代码,以确认程序正在跳过对AgentStopped和AgentStarted的调用。我做错了什么

Protected Overrides Sub OnPause()
    Log.WriteEntry("Agent paused.") 'This is written to the log
    AgentStopped() 'This line is skipped
End Sub

Protected Overrides Sub OnContinue()
    Log.WriteEntry("Agent restarted.") 'This is written to the log
    AgentStarted() 'This line is skipped
End Sub

Private Sub AgentStarted()
    Log.WriteEntry("AgentStarted called.") 'This never written to the log
End Sub

Private Sub AgentStopped()
    Log.WriteEntry("AgentStopped called.") 'This never written to the log
End Sub
正如您所理解的,由于调用了containing方法,因此无法跳过您暗示的行。还有别的事情正在发生。我想您显示的代码已经简化了。对吧?

我敢打赌,要么是错误地运行了错误版本的代码,要么是在实际代码中,调用的方法AgentStarted和AgentStopped中发生了异常

为了调试此功能,我将遵循以下步骤:

更改当前日志消息,并在调用函数后添加消息

保护覆盖子暂停 Log.WriteEntryAgent暂停开始。 代理人 Log.WriteEntryAgent暂停结束。 端接头

受保护的覆盖子OnContinue Log.WriteEntryAgent重新启动开始。 代理开始 Log.WriteEntryAgent重新启动结束。 端接头

如果您看到新消息,您将能够验证您实际运行的是正确版本的代码,而不是错误部署的旧版本

您应该对try-catch使用异常处理。我不确定我是否从未使用过它,但使用该事件获取可能的未捕获异常的信息可能会有所帮助。另一个选项是检查在执行web服务时发生的错误


希望我能帮忙

我添加了try-catch语句并检查了Windows事件日志,但没有发现任何内容。然后我重新构建了这个项目,没有改变任何东西,它成功了。我没有解释。。谢谢你的回答!由于某些原因,您运行的代码版本错误。请投票表决我的答案。对于导航到您的问题的用户来说,能够识别有用的答案是很重要的……我还不能投票。我是新来的,名声不好。我会尽快的。