Вы запрашиваете это для создания WPF-приложения с одним экземпляром ? Если это так, я рекомендую вам взглянуть на этот проект , который я создал на CodePlex. Он предоставляет производный класс Application
, который инкапсулирует логику для создания приложения WPF с поддержкой одного экземпляра / нескольких экземпляров, что также касается взаимодействия между экземплярами (то есть основное приложение может получать аргументы, передаваемые в последующий экземпляр).
Исходный код доступен, так что вы даже можете проверить, что глобальный мьютекс и некоторые WaitHandle используются для обеспечения синхронизации.
Чтобы ответить непосредственно на ваш вопрос, правильное место для получения глобального мьютекса находится внутри переопределения метода Application.Startup
, так как он вызывается в начале (более или менее) метода Application.Run
, который может считается эквивалентной программе Main
(конечно, это не одно и то же, но для цели достаточно одного приложения).