Хорошо, у меня есть эта программа, и я не хочу, чтобы выполнялось более одного ее экземпляра. Итак, что у меня есть сейчас, так это то, что он захватывает все экземпляры, которые соответствуют его имени, и если их несколько, он выходит и сообщает пользователю, что он уже запущен в другом экземпляре.
Однако есть особый случай, в котором новый экземпляр захочет изменить действия другого экземпляра, после чего он выйдет. Как я могу это сделать?
Вот пример:
У меня есть эта программа, которая раз событие. Я не хочу, чтобы одновременно выполнялось более одного, потому что нельзя делать две вещи одновременно (для этого приложения). Теперь скажем, что сторонняя программа хочет уведомить эту ветку о том, что пользователь сейчас работает над чем-то другим, поэтому она снова запускает приложение. Если приложение уже запущено, оно обновит свои действия, иначе оно будет работать как обычно.
Как это можно сделать?
Это то, что я использую, чтобы узнать, работает ли другой экземпляр:
string proc = Process.GetCurrentProcess().ProcessName;
Process[] processess = Process.GetProcessesByName(proc);
if (processess.Length > 1) {
MessageBox.Show("There is an instance of the Timer already running");
return;
}