C#Service冻结的子进程无法终止

时间:2014-02-03 23:16:34

标签: c# windows service process ftp

我有一个程序可以压缩文件夹中的文件,然后通过FTP发送它们。 我正在使用Rar.exe(命令行winrar实用程序)来压缩文件。 我正在使用ncftpput.exe(命令行ftp发送实用程序)来发送文件。

该程序运行良好数月,直到最近我决定将其变成Windows服务。 我添加了顶部包含相同程序的服务代码。但是现在我遇到了一个奇怪的问题。

基本上会发生的事情是ncftpput.exe和/或Rar.exe似乎在运行中冻结。我无法在taskmgr中杀死它们(因为它们在系统帐户下 - “访问被拒绝”) Rar.exe使用abotu 50%的CPU使用率,显然仍然是压缩文件,但该文件没有改变大小或被修改了几个小时。 ncftpput.exe正在进行中,但根本没有打开FTP连接。 通常这两个程序都应该继续运行直到完成任务,否则如果遇到问题就退出(如大多数cmd行程序)

有谁能猜出这个程序对服务的影响如何使这种行为发生?

操作系统:Windows XP嵌入式。

语言:C#3.5

感谢

编辑:我使用rar.exe和ncftpput.exe的意图是我可以使用一个可靠的cmd行程序,它可以正常工作,而不必编写更多代码包含在我的程序中。
显然我不应该从服务中启动这些程序,对吧? 那么最好的办法是什么? 谢谢你的回复。

1 个答案:

答案 0 :(得分:1)

我已将其修改为仅使用DLL库,而不是外部进程。现在它完美无缺。

所以答案是:不要尝试从服务中启动外部进程! 我不知道为什么,但就是这样。