したがって、次のように、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
。これが問題である場合、コマンドラインを実行する前にいくつかの値を渡す必要がありますか?
前もって感謝します、