2013-04-09 51 views
0

我创建了C#项目,处理核心从C++移植 - 核心只是执行作业 - 获取简单数据,处理它并返回一些结果作为简单数据。作为windows服务运行时应用程序的奇怪行为

该项目作为控制台应用程序运行时的工作原理确定:

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服务使它?

+3

“核心停止正常工作”是什么意思?你没有提供可以识别问题的信息,因为你没有告诉我们这个问题到底是什么。除非你解释这意味着什么,否则“停止工作”是没有用的。 “回报更差的结果”也没有告诉我们,因为“更坏的结果”对除了你以外的任何人都没有任何意义。我们无法阅读您的想法或从这里看到您的代码。 :-)如果你希望我们帮你解决问题,你需要解释这个问题。 – 2013-04-09 22:17:18

+0

@KenWhite我不认为核心本身有问题。它在移植之前正在工作,它在移植为控制台应用之后正在工作。代码很长很复杂。 的问题是什么时,程序运行作为控制台应用程序或Windows服务应用区别呢,所以我和人在类似的情况可能知道,从哪个方面来说,他们应该对其进行调试。 – Ari 2013-04-09 22:21:59

+0

正如我所说,你没有告诉我们这个问题。 SO是针对具体问题的,而不是“你能推测什么可能是我不会告诉你的问题的原因吗?”讨论。如果您不会告诉我们它是以什么方式损坏的,我们无法告诉您有什么问题或您可以如何解决问题。你的问题需要清楚并描述实际问题,否则它很可能会被视为“过于本地化”或“不是真正的问题”。 – 2013-04-09 22:27:18

回答

1

问题在于一些相对路径。

例如:

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

而且file.ext存在与Program.exe bin目录。

它的工作原理,当你运行这个作为控制台应用程序,但是当您尝试运行该Windows服务,然后根目录将是不同的,程序将无法找到file.ext

相关问题