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

C#冻结的服务子进程无法终止,c#,windows,service,process,ftp,C#,Windows,Service,Process,Ftp,我有一个程序,可以将文件压缩到文件夹中,然后通过FTP发送。 我正在使用Rar.exe(命令行winrar实用程序)压缩文件。 我正在使用ncftpput.exe(命令行ftp发送实用程序)发送文件 这个程序几个月来一直运行良好,直到最近我才决定将其转换为windows服务。 我添加了顶部包装的服务代码,下面是相同的程序。然而现在我遇到了一个奇怪的问题 从本质上讲,发生的情况是ncftpput.exe和/或Rar.exe将在操作中期冻结。我无法在taskmgr中杀死它们(因为它们位于系统帐户“拒

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

这个程序几个月来一直运行良好,直到最近我才决定将其转换为windows服务。 我添加了顶部包装的服务代码,下面是相同的程序。然而现在我遇到了一个奇怪的问题

从本质上讲,发生的情况是ncftpput.exe和/或Rar.exe将在操作中期冻结。我无法在taskmgr中杀死它们(因为它们位于系统帐户“拒绝访问”下) Rar.exe使用abotu 50%的CPU使用率,并且显然仍在压缩一个文件,但是该文件在数小时内没有改变大小或被修改。 ncftpput.exe正在运行,但是根本没有打开FTP连接。 正常情况下,这两个程序都应该一直运行,直到完成任务为止,或者在遇到问题时退出(就像大多数命令行程序一样)

有人能猜出这个程序对服务的更改是如何导致这种行为发生的吗

操作系统:嵌入式Windows XP

语言:C#3.5

谢谢

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

我已将其修改为仅使用DLL库,而不使用外部进程。现在它工作得很好

所以答案是:不要试图从服务内部启动外部流程!
我不知道为什么,但事实就是这样

只是一个附带的问题:为什么要为运行多个交互进程的程序提供服务?他们应该退出,这听起来不像一句话可以帮助你睡个好觉……我想这会让你更容易确保它在启动时运行。你是在暗示关于开始一个我应该知道的过程的一些常识吗?请进一步解释:)没有隐藏任何内容,但您可以尝试自己查看捕获其输出(stdout和stderr)的情况(最终您甚至可以推送输入)。它有点太脆弱了,理论上,控制台应用程序甚至可能决定显示一个消息框(或者在用户输入(如确认)到来之前阻止)。我不知道这将如何在服务上工作…谢谢你的帮助。我相信我会尝试使用c#zip和ftp库让服务来完成这项工作。