应用程序作为windows服务运行时的奇怪行为

本文关键字:服务 windows 应用程序 运行时 | 更新日期: 2023-09-27 18:08:25

我创建了C#项目,从C++移植了处理核心-核心只是做这项工作-获得简单的数据,处理它并返回一些结果作为简单的数据。

这个项目在作为控制台应用程序运行时可以正常工作:

MainProcess main = new MainProcess();
main.Run(); //starts thread with main
main.Join(); //prevent main thread from terminating

当我将其更改为作为最简单的windows进程运行时,MainProcess main = new MainProcess();初始化,main.Run()启动,main.Abort() '' aborts thread with main停止,核心停止正常工作。

核心是某种确定性的启发式,它除了自己什么都不知道。当整个应用程序作为服务运行时,它获得相同的数据,但返回更差的结果。

我检查过了,不是权限问题。

你知道什么地方可能出错吗?这是完全相同的代码,只有一个小的变化。对于相同的数据,它总是返回相同的结果(对于所有控制台执行相同,对于所有windows服务执行相同)。

所以我的问题是:当程序作为控制台应用程序或作为windows服务运行时,它有什么不同?

应用程序作为windows服务运行时的奇怪行为

问题出在一些相对路径上。

例如:

...
OpenFile("file.ext");
..

file.extProgram.exe同时存在于bin dir中。

当你将其作为控制台应用程序运行时,它可以工作,但当你试图将其作为windows服务运行时,根目录将不同,程序将找不到file.ext