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

时间:2013-04-09 22:07:45

标签: c# windows service windows-services console

我创建了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停止核心停止正常工作。

核心是一些确定性的heurestic,除了它本身之外什么都不知道。当整个应用程序作为服务运行时,它会获得相同的数据,但会返回更糟糕的结果。

我查了一下,这不是一些许可问题。

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

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

1 个答案:

答案 0 :(得分:1)

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

例如:

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

file.ext存在于bin目录中Program.exe

当您将其作为控制台应用程序运行时,它会起作用,但是当您尝试将其作为Windows服务运行时,根目录将会有所不同,程序将找不到file.ext