【发布时间】:2012-06-30 07:10:19
【问题描述】:
Windows 服务中方法调用的顺序是什么?我们遇到了时间问题,我认为这是由于构造函数完成处理的时间过长。
这是我认为我们遇到的类似问题 Error 1053 the service did not respond to the start or control request
但是,我们想知道调用 Main、OnStart、InitializeComponent 等方法的顺序和时间和/或应该何时调用它们。
同样,OnStart 方法是否是放置所有处理的最佳位置?
**解决方案
花了一些时间做一个测试服务并测试了下面的响应,发现超时来自 Main 方法处理以及 Main 方法中调用的构造函数导致它超时。将所有内容移至 OnStart 以及仅关闭一个线程似乎可行。详情在这里。 http://www.adamthings.com/post/2012/06/28/error-1053-the-service-did-not-respond-to-the-start-or-control-request-in-a-timely-fashion/
【问题讨论】:
-
OnStart 应该启动另一个线程来处理您的所有处理,因此该方法可以立即返回。以我的经验,这效果最好。我不会在 InitializeComponent 中放任何东西。
-
OnStop 应该中止线程,并等待它完成:)
-
你可以通过放置断点找出来。
-
将两者都标记为正确答案(如果可以的话)。这是一篇评论我发现的博客文章。两者似乎都运作良好。 adamthings.com/post/2012/06/28/…
标签: c# windows-services