【发布时间】:2021-06-22 15:54:14
【问题描述】:
我创建了一个具有OnStart 方法的Windows 服务应用程序。该方法将从 app.config 文件中读取一个路径,创建一个对象,然后服务将该对象的覆盖 ToString() 方法写入一个带有 StreamWriter 的文件。
当我使用“net start”手动启动此服务时,这是有效的。因此调用了OnStart 方法,创建了对象并将其ToString 方法写入文件。
我将它设置为 Windows 启动时自动运行的服务。
我的问题是,这个OnStart 方法在Windows 启动服务后没有被调用。所以我认为当windows在启动时开始运行服务时,它启动我的服务只是不调用OnStart方法。
有没有人有同样的问题或有人有解决方案?
OnStart 方法:
protected override void OnStart(string[] args)
{
filePath = configReader.ReadConfig("FilePath");
DateEvent dateEvent = new DateEvent(DateTime.Now, TimeLoggerCore.Events.STARTUP.ToString());
writer.WriteToFile(dateEvent, filePath, true, false);
}
构造函数:
public TimeLoggerService()
{
InitializeComponent();
configReader = new AppConfigReader();
writer = new CSVWriter();
}
程序.cs:
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new TimeLoggerService()
};
ServiceBase.Run(ServicesToRun);
}
【问题讨论】:
-
很难说..这里没有代码..我的onstart代码有效,所以我们需要一些示例代码..尝试一个真正的小型服务,它可以启动并可能在临时文件中创建一个文件..代码会很小
-
从解决方案中添加代码。
-
看起来您从未真正运行过您的服务。节目部分有什么
-
在哪里?因为它是一个服务,它应该处理 OnStart 事件。正如我在使用“net start”运行时所写的那样,该方法被调用。只是当 windows 启动时没有。
-
在您的项目中应该是一个 program.cs,其中包含服务类并运行。我想知道是否还有其他事情发生。