如果使用引用,则无法启动Windows服务

时间:2018-11-22 13:42:34

标签: c# windows-services

我已经创建了Windows服务。当我尝试启动该服务时,我收到错误消息

  

Windows无法在本地计算机上启动自动处理服务。

     

错误1053:服务未及时响应启动或控制请求。

这是我的代码

using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Timers;
using Drone.Engine;                                                                             //

namespace Auto
{
public partial class Service1 : ServiceBase
{
    static string month = DateTime.Now.ToString("MMM");
    private Timer timer = new Timer();
    private Dictionary<string, bool> processStatus = new Dictionary<string, bool>();
    private Executor worker = new Executor();                                               //
    public Service1()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)

    {
        processStatus.Add("start", false);
        processStatus.Add("stop", false);
        System.Threading.Thread.Sleep(10000);
        WriteToFile("Service Started at " + DateTime.Now);
        timer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
        timer.Interval = 2000;
        timer.Enabled = true;
    }

    private void OnElapsedTime(object sender, ElapsedEventArgs e)
    {
        foreach (var process in processStatus.Where(v => v.Value == false))
        {
            WriteToFile(process.Key + " Sync Started at " + DateTime.Now);
            ChangeProcessStatus(process.Key, true);
            worker.Execute(Executor.sender.Navision, process.Key);                          // 
            ChangeProcessStatus(process.Key, false);
            WriteToFile(process.Key + " Sync Finished at " + DateTime.Now);
        }

    }

    protected override void OnStop()
    {
        WriteToFile("Service stopped at " + DateTime.Now);
    }

    private void ChangeProcessStatus(string key, bool status)
    {
        processStatus[key] = status;
    }
    public void WriteToFile(string Message)
    {
        string path = AppDomain.CurrentDomain.BaseDirectory + "\\data\\logs";
        if (!Directory.Exists(path))
        {
            Directory.CreateDirectory(path);
        }
        string filepath = AppDomain.CurrentDomain.BaseDirectory + "\\data\\logs\\ServiceLog_" + DateTime.Now.Date.Day + " " + month + ".log";
        if (!File.Exists(filepath))
        {
            using (StreamWriter sw = File.CreateText(filepath))
            {
                sw.WriteLine(Message);
            }
        }
        else
        {
            using (StreamWriter sw = File.AppendText(filepath))
            {
                sw.WriteLine(Message);
            }
        }
    }
}
}

但是如果我删除行 使用Drone.Engine;

该服务已成功启动。为什么我无法在服务中使用它?

该dll位于同一目录中。我已使用发行版进行安装。还是这个问题。

1 个答案:

答案 0 :(得分:0)

以前我使用的是类似文件路径的

>>> df.Main.replace('Label2_Value= Tech Service, INC', 'Tech Service, INC')
0    Label2_Name= Customer
1        Tech Service, INC
Name: Main, dtype: object

这在我的应用程序中运行良好。但是,当我将其引用到Windows服务时,出现了System.IO.DirectoryNotFoundException错误。

我将文件路径更改为

filePath=@"data\log";

它同时适用于我的服务和应用程序。