WPF On Start определяет, запущен ли процесс, и выводит приложение на передний план - PullRequest
3 голосов
/ 04 июня 2009

У меня довольно простая проблема.

Когда программа была запущена и пользователь пытается запустить другой экземпляр. Этот новый экземпляр должен вывести старый экземпляр на передний план и выйти.

Решение выглядит довольно просто, я мог бы взять код из http://www.codeproject.com/KB/cs/oneprocessonly.aspx и покончить с этим.

К счастью / К сожалению, я использую WPF. Это значит, что я не могу контролировать содержимое метода Main ().

Я нашел решение этой проблемы "Как я могу предоставить свой собственный метод Main () в своем приложении WPF?" @ http://learnwpf.com/Posts/Post.aspx?postId=a5643949-ab80-47f9-93c8-f5e8e5782d34.

Но это решение приводит к панике другие проблемы, такие как статистика Expression Blend, когда нет файла App.xaml.

Я мог бы использовать событие OnStarted классов App, но я использую ресурс заставки WPF, это будет означать, что будет отображаться дополнительная заставка.

Последнее, что меня беспокоит в связи с этим методом, это то, что он кажется мне не «будущим»: (.

Есть ли какое-нибудь решение в стиле WPF для этой проблемы?

Заранее спасибо.

1 Ответ

6 голосов
/ 04 июня 2009

Я полагаю, что эта ссылка может вам помочь: C # Single Instance Application

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

Что касается вашего собственного Main (), я согласен, что Expression Blend действительно ведет себя немного странно, когда ваш App.xaml не существует. В моем собственном приложении я использую Expression Blend для ручного редактирования некоторых сложных Windows, но не выполняю компиляцию или тестирование в приложении (основные определены в App.cs).

Если вы проводите обширное тестирование пользовательского интерфейса с использованием Expression Blend, я не могу сказать, что вы обязательно добьетесь большого успеха, используя этот метод. Я обычно выполняю большую часть своего редактирования и тестирования в Visual Studio и редактирую XAML напрямую, так что это не такая большая проблема для меня. Я бы посчитал это ограничением (или ошибкой?) Expression Blend лично.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...