Windows服务中的方法调用顺序

时间:2012-06-28 17:46:25

标签: c# windows-services

在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/

2 个答案:

答案 0 :(得分:6)

我相信订单是

至于放置代码的位置,我建议将任何可以缓存的代码放在Main中,并在OnStart内的每个启动中循环使用任何代码。但是,您不应该在OnStart中进行任何实际处理,只需初始化即可。使用单独的线程来完成大部分逻辑。

此外,MSDN is helpful with this

答案 1 :(得分:6)

请勿在{{1​​}}方法中阻止。听起来你正在这样做。

OnStart()方法中创建一个单独的线程,然后离开。

我没有测试过这个,但类似于:

OnStart()

要回答有关事件顺序的问题,只需在每种方法中设置Trace语句。我不确定会有多大帮助。您获得的消息(服务未响应启动请求...)表示在应该相对快速执行的方法中阻塞(或花费太长时间)。

相关问题