我创建了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服务运行时它会有什么不同?
答案 0 :(得分:1)
问题出在一些相对的路径上。
例如:
...
OpenFile("file.ext");
..
且file.ext
存在于bin目录中Program.exe
。
当您将其作为控制台应用程序运行时,它会起作用,但是当您尝试将其作为Windows服务运行时,根目录将会有所不同,程序将找不到file.ext
。