它看起来像我的谷歌搜索技巧是坏,我不能对一些问题寻找答案:如何关机/交互的rubyw.exe启动任务
我称之为从C#服务红宝石任务。除了在服务某几个东西来获得相关信息的形式登记,准备任务等我做的最后:
m_mProcess.StartInfo = new ProcessStartInfo { FileName = Command, Arguments = Argument, WorkingDirectory = WorkDir, CreateNoWindow = true };
m_mProcess.Start();
Pid = m_mProcess.Id;
文件名是“ruby.exe”。我尝试了很多东西,以便在停止服务时向发起的任务发送CTRL-SIGNAL-BREAK(请参阅此处导致失败的更多详细信息:Start a EXE file from a service and stop it by sending SIGBREAK)。
因此,现在我只是停止与Process.GetProcessById(Pid).Kill();
的过程。
这只会带来一个问题。我使用ruby任务启动瘦服务器,该任务在tcp端口上打开并侦听。当我杀死进程时,端口被设计窗口阻塞2-3分钟(不知道确切的时间 - 没有找到禁用此功能的时间)。
到目前为止的前言。现在到我的实际问题:)。
我正在考虑使用rubyw.exe
而不是ruby.exe
,并找到任何方式与任务交互。我的希望是,可以在不阻塞任何端口的情况下正确关闭/停止rubyw.exe任务。 我已经改变了服务,以rubyw.exe开始测试任何副作用或问题,而不是使用ruby.exe(到目前为止还找不到任何)。但是我仍然必须杀死这个进程,直到我找到一种正确关闭进程的方式。
对于这种情况,我需要修改瘦服务以在循环中检查此var,并在var设置为停止时将其关闭。这是一种方法,我可以检查,但也希望其他答案来解决它:) – YvesR 2012-08-08 07:49:08