因此,我能够在 Windows 上强制执行我的应用程序的单个实例,如下所示。
[STAThread]
class method Program.Main(args: array of string);
begin
var mutex := new Mutex(true, "{8F6F0AC4-B9A1-45fd-A8CF-72F04E6BDE8F}");
if mutex.WaitOne(Timespan.Zero, true) then
begin
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.ThreadException += OnThreadException;
lMainForm := new MainForm;
lMainForm.ShowInTaskbar := true;
lMainForm.Visible := false;
Application.Run(lMainForm);
end
else
MessageBox.Show("Another copy running!!!");
end;
但是,在单声道下在 Linux 上运行相同的应用程序,此代码根本不起作用。我能够运行多个副本。我不知道这是否与我在终端上启动应用程序(如mono MyPro.exe
. 如果这是问题所在,是否需要在执行命令行之前传递一些值。
提前致谢,