我目前正在运行一款用C#编写的服务器软件程序,我正在尝试在Linux上为该.net软件添加支持。几乎所有内容在mono下都正常工作,但有些问题无法解决。例如,在服务器软件成功关闭时,另一个用C#编写的外部程序应立即弹出并从文本文件发送数据心跳。在.net环境中,例如Windows 7,这很简单。
Process.Start("Heartbeat.exe");
就是这样,它会弹出来。
还有,当服务器软件检测到主机操作系统正在运行mono时,在服务器关闭功能时,我尝试运行其他代码。上面的代码没有效果。我尝试了这个,但我可能不知道自己在做什么。
ProcessStartInfo procInfo = new ProcessStartInfo();
procInfo.UseShellExecute = false;
procInfo.FileName = "Heartbeat.exe";
Process.Start(procInfo);
这也不起作用。我试过运行一个.sh文件来使用mono参数运行.exe文件,但是效率非常低下。非常感激任何帮助。(在你们责骂我阅读mono和ProcessStartInfo API文档之前,我已经都看了,但我仍然一无所知。而且mono API很奇怪。)
注:感谢Lex Li的解答,但是在使用时出现了问题。
Process.Start("mono Heartbeat.exe")
I get this error:
Error when getting information for file '/home/me/Desktop/LCDev/mono Heartbeat.exe': No such file or directory
我认为上述代码试图运行一个名为 "mono Heartbeat.exe" 的程序,而不是使用 mono 打开 Heartbeat.exe。