Вопрос

Я написал небольшое приложение WPF, которое когда «закрыто» минимизирует на системный лоток (требование клиентов). Двойной щелчок поппал его резервное копирование или щелчок правой кнопкой мыши дает контекстное меню для выхода.

Но если приложение сводится к минимуму, и пользователи переходят к Start-> Все программы-> Приложение, которое он начинает новый экземпляр.

Что (в C #) мне нужно сделать, чтобы получить приложение для максимального максимального применения, если пользователь имеет это, а не выключить новый экземпляр?

Спасибо!

Это было полезно?

Решение

Этот отвечать от Jon Skeet обсуждает, используя Mutex, чтобы сделать это

Mutex - это путь. Это намного менее хрупкое, чем использование имен процессов и т. Д.

Тем не менее, вам нужно убедиться, что Mutex не собран мусор. В случае сервиса (который представляет собой мероприятие, а не имеющую «основной» метод, который заканчивается до завершения), наиболее разумный способ сделать это, вероятно, для того, чтобы поставить его в статическую переменную.

Утилизируйте Mutex, когда обслуживание останавливается, поэтому вам не нужно ждать доктора доработки или что-то подобное.

Мэтью Бриндли дает этот пример в том же вопросе для его ответ

[STAThread]
static void Main() 
{
   using(Mutex mutex = new Mutex(false, "Global\\" + appGuid))
   {
      if(!mutex.WaitOne(0, false))
      {
         MessageBox.Show("Instance already running");
         return;
      }

      Application.Run(new Form1());
   }
}

Чтобы максимизировать другое приложение, вам нужно будет отправить его сообщение для максимизации. Смотрите эту статью на Отправка сообщения

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top