none
Windows服务间隔性启动失败 RRS feed

  • 问题

  • 我自己用C#写了一个Windows服务。功能也很简单。奇怪的就是,当我第一次去启动这个服务的时候,启动时间会超过30秒导致服务无法启动,错误1053:服务没有及时响应启动或控制请求。然后我再一次选择启动这个服务,它一下子就成功启动了。停止该服务后再次重新启动,又会启动失败,再次启动才会成功。如此反复。
    不知道这种间隔性启动失败是什么原因所致的呢?

    在成功启动后我自己写的功能都运行正常。所以我觉得不应该是我自己写的程序有问题吧。

    对了,我的Onstart方法是这样的:

                // 得到一些基本数据 总内存大小
                MemoryInfo mi = new MemoryInfo();
                GlobalMemoryStatus(ref mi);
                this.totalPhysicalMemoryMB = mi.dwTotalPhys / 1024 / 1024;
                // 开启定时器,开始计时和写日志
                this.timer.Enabled = true; // 定时器间隔为100毫秒
                base.OnStart(args);

    2010年8月13日 9:08

答案

  • 启动超时的原因可能是因为 OnStart 方法超过 30 秒但未能执行完毕。请给出 MemoryInfo 的代码以及 GlobalMemoryStatus 代码,以便分析。
    Mark Zhou
    2010年8月13日 9:54
  • 服务启动方法里面尽量只做基本赋值等不费时的事情。启动方法超过30秒就会报错。 看来应该是你的启动方法执行太费时间了。

    第二次能启动是以为头一次初始化要做的事情已经执行完了,系统进程中还保留着。

    2010年8月13日 10:02

全部回复

  • 启动超时的原因可能是因为 OnStart 方法超过 30 秒但未能执行完毕。请给出 MemoryInfo 的代码以及 GlobalMemoryStatus 代码,以便分析。
    Mark Zhou
    2010年8月13日 9:54
  • 服务启动方法里面尽量只做基本赋值等不费时的事情。启动方法超过30秒就会报错。 看来应该是你的启动方法执行太费时间了。

    第二次能启动是以为头一次初始化要做的事情已经执行完了,系统进程中还保留着。

    2010年8月13日 10:02