它看起來像我的谷歌搜索技巧是壞,我不能對一些問題尋找答案:如何關機/交互的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