我们编写了一个自定义Windows服务(VB.NET,.NET Framework 2.0),需要一段时间才能启动,因为它上传了销售。
Protected Overrides Sub OnStart(ByVal args() As String)
-- upload sales here
End Sub
启动它需要很长时间的事实很好,但这会在Windows中产生超时错误,而另一个启动的程序不会添加到系统托盘中。
我们可以延迟销售上传,但宁愿让Windows忽略这项服务需要很长时间才能启动而不会产生错误的事实。有什么想法吗?
答案 0 :(得分:5)
在另一个线程上启动上传销售代码,该代码将在后台运行上传代码并让服务响应其启动并且您不会收到超时消息
例如
Protected Overrides Sub OnStart(ByVal args() As String)
Dim start as new ThreadStart(UploadSalesMethod)
Dim t as new Thread(start)
t.Start()
End Sub
答案 1 :(得分:4)
OnStart方法中的代码运行时间不能太长。因此,如果你有一个长时间运行的代码,那么就会在另一个线程下运行,这样OnStart事件就会提前返回。
答案 2 :(得分:1)
直接解决您的问题“宁愿让Windows忽略这个服务需要很长时间才能启动而不会产生错误的事实”,您可以通过调用{RequestAdditionalTime上的{{3}}来增加启动超时值。 1}}。