Windows服务无法在发布模式C#中执行

时间:2017-07-18 11:07:06

标签: c# visual-studio visual-studio-2012

我正在开发Windows服务(在Visual Studio 2008中),当我在调试模式下运行时,它可以正常工作:

        static void Main()
    {
        #if DEBUG
           Descarga myServicio = new Descarga();
           myServicio.OnDebug();
           System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
        #else

           ServiceBase[] ServicesToRun;
           ServicesToRun = new ServiceBase[] 
            { 
                new Descarga() 
            };
            ServiceBase.Run(ServicesToRun);
       #endif

    }

OnDebugStart()只调用Windows服务的OnStart()方法,运行的线程只是一个无限运行的线程(直到调用OnStop())来检查服务仍然活着在线。

    public Timer myTimer;
    public string fileName;
    string txtLog;

    public Descarga()
    {
        InitializeComponent();
        myTimer = new Timer();
        myTimer.Interval = 10000; 
        myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed);   
    }
    protected override void OnStart(string[] args)
    {
        myTimer.Enabled = true;            
    }

当我在调试模式下启动时,这非常正常,但是当我在发布时运行它时,服务被托管,但代码不会执行。

我更改了服务的用户,问题仍在继续。

亲切的问候

1 个答案:

答案 0 :(得分:1)

从我在代码中看到的内容

protected override void OnStart(string[] args)
{
    myTimer.Enabled = true;            
}

您的OnStart正在启动计时器。当处于释放模式时,你没有打电话给我,我假设你的计时器正在启动服务。您还需要在发布模式下调用它。