5

我目前正在运行一个用 C# 编写的服务器软件程序,并且我正在尝试
在 linux 上添加对这个 .net 软件的支持。在单声道下,几乎一切都按预期工作,但是,有些事情不起作用。例如,在成功关闭服务器软件后,另一个用 C# 编写的外部程序应该会立即弹出并从文本文件发送数据的心跳。在 .net 环境中,例如 Windows 7,这很简单

Process.Start("Heartbeat.exe");

就是这样。它弹出。

Annnnnnnnd,当服务器软件检测到主机操作系统正在运行单声道时,在服务器关闭功能时,我试图运行其他代码。上面的代码没有效果。我试过这个,但我可能不知道我在做什么。

ProcessStartInfo procInfo = new ProcessStartInfo();
procInfo.UseShellExecute = false;
procInfo.FileName = "Heartbeat.exe";
Process.Start(procInfo);  

这也不起作用。我曾尝试运行 .sh 来运行带有单声道参数的 .exe,但效率非常低。非常感谢任何帮助和所有帮助。(在你们像大多数人一样喊我阅读 mono 和 ProcessStartInfo API 之前,我都阅读了它们,但我仍然一无所知。而且 mono API 很奇怪。)

编辑:

谢谢 Lex Li 的回答,但是在使用的时候

Process.Start("mono Heartbeat.exe")

我收到此错误:

Error when getting information for file '/home/me/Desktop/LCDev/mono Heartbeat.exe': No such file or directory

我假设上面的代码试图运行一个名为“mono Heartbeat.exe”的程序,而不是用单声道打开 Heartbeat.exe。

4

1 回答 1

10

C# 应用程序必须在 Linux 上使用 mono 启动,因此您应该使用

Process.Start("mono", "full_path_of_your_exe");

于 2013-09-15T03:29:01.110 回答