繁体   English   中英

Windows服务启动然后立即停止

[英]Windows Service start then stops immediately

我已经创建了一个窗口服务,它创建了一个Form,其中创建了一个工具条图标来管理套接字。 我可以通过在Visual Studio中创建的安装程序进行安装,但是当我转到服务并启动我的服务时,它会给我一个错误,说它立即开始和停止。

这是服务代码:

public Service()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        base.OnStart(args);

        ServiceName = "WizardServer";
        CanPauseAndContinue = false;
        CanHandleSessionChangeEvent = true;
        CanStop = true;

        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        try
        {
            connectionHandler = new ConnectionHandler();  
            serviceThread = new System.Threading.Thread(new ThreadStart(serviceTarget));
            alive = true;
            serviceThread.Start();
        }
        catch {}
    }

    private void serviceTarget()
    {
        Application.Run(new Form1(connectionHandler));

        while (alive) 
        {
            Thread.Sleep(10000);
        }
    }

    protected override void OnStop()
    {
        base.OnStop();

        try
        {
            connectionHandler.stop();
        }
        catch {}

        serviceThread.Abort();

        alive = false;
        Stop();
    }

PS:我已经测试了表格,它运行得很好。

我有这个问题,并在谷歌搜索了几个小时,然后我找到解决方案。 您可以在代码中添加以下代码。 在类构造函数中添加InitializeTimer() 。您应该在OnStart()上设置oTimer.Enabled = trueoTimer.Start()oTimer.Stop()上设置OnStop()

码:

  void create()
    {
        string s = "";
    }
    void InitializeTimer()
    {
        oTimer = new System.Timers.Timer(interval);
        oTimer.AutoReset = true;
        oTimer.Enabled = true;
        oTimer.Elapsed += new System.Timers.ElapsedEventHandler(oTimer_Elapsed);
    }

    void oTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
    {
        CreateFileData();
    }

    void CreateFileData()
    {
        string path = @"C:\SimpleWcfService\SimpleWindowsService\bin\Release\Singh.txt";
        StreamWriter oStreamWriter = new StreamWriter(path, true);
        oStreamWriter.WriteLine(DateTime.Now.ToString());
        oStreamWriter.Close();
        oStreamWriter = null;
    }

我回答这个问题的时间非常晚,但希望这会帮助其他人解决同样的问题:

更改Windows服务项目的属性中的“输出类型”为我修复了它。

  1. 在解决方案资源管理器中,找到您的项目,然后双击“属性”
  2. 在打开的窗口中,转到“应用程序”选项卡
  3. 将“输出类型”下的值更改为“控制台应用程序”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM