0

我创建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 服务运行时,它有什么不同?

4

1 回答 1

1

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

例如:

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

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

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

于 2013-04-10T09:25:10.943 回答