簡體   English   中英

Windows服務在啟動后立即停止

[英]Windows service stops right after launching

我正在編寫Windows服務時遇到以下問題:啟動服務時,它會立即停止。 當我使用控制台應用程序時,它並沒有崩潰。 我不知道這是什么原因。

這是代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.ServiceModel;
using System.ServiceProcess;
using System.Configuration;
using System.Configuration.Install;
using WindowsService;

namespace WS
{

    [ServiceContract(Namespace = "http://WS")]
    public interface INewsReader
    {

    }


    public class NewsReaderService : INewsReader
    {

        public NewsReaderService()
        {
            var config = new Config();

            var scheduled = new Schedule(config);
            scheduled.ExecuteScheduledEvents();
            while (true)
            {
                System.Threading.Thread.Sleep(1000);
                int i = 0;
            }
        }
    }

    public class NewsReaderWindowsService : ServiceBase
    {
        public ServiceHost serviceHost = null;
        public NewsReaderWindowsService()
        {

            ServiceName = "NewsReaderWindowsService";
        }

        public static void Main()
        {
            ServiceBase.Run(new NewsReaderWindowsService());
        }


        protected override void OnStart(string[] args)
        {
            var thread = new System.Threading.Thread(() =>
            {
                while (true)
                {
                    int i = 0;
                    System.Threading.Thread.Sleep(1000);
                }
            });
            thread.Start();

            serviceHost = new ServiceHost(typeof(NewsReaderService));


            serviceHost.Open();

        }

        protected override void OnStop()
        {

        }
    }


    [RunInstaller(true)]
    public class ProjectInstaller : Installer
    {
        private ServiceProcessInstaller process;
        private ServiceInstaller service;

        public ProjectInstaller()
        {
            process = new ServiceProcessInstaller();
            process.Account = ServiceAccount.LocalSystem;
            service = new ServiceInstaller();
            service.ServiceName = "NewsReaderWindowsService";
            Installers.Add(process);
            Installers.Add(service);
        }
    }
}

好吧,首先,我認為您的OnStart方法編寫得很糟糕。 我看不出創建一個基本上是空線程的原因。 您應該只在那里初始化服務(如有必要),立即啟動一個將一直工作的新線程,並保留OnStart方法。

第二個原因是使用try catch塊,因為我認為其中的某個地方存在異常,這就是Windows服務停止的原因。

第三,查看此示例WCF與Windows Service托管

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM