Возможный дубликат:
Каков правильный способ создания одного экземпляра приложения?
У меня есть приложение Winforms, которое запускает заставку с помощью следующего кода:
Hide();
bool done = false;
// Below is a closure which will work with outer variables.
ThreadPool.QueueUserWorkItem(x =>
{
using (var splashForm = new SplashScreen())
{
splashForm.Show();
while (!done)
Application.DoEvents();
splashForm.Close();
}
});
Thread.Sleep(3000);
done = true;
Вышеуказанное находится в основной форме codebehind и вызывается из обработчика события загрузки.
Однако, как я могу гарантировать, что только один экземпляр приложения будет загружаться одновременно? В обработчике события загрузки основной формы я мог проверить, находится ли список процессов в системе (через GetProcessesByName (...)), но есть ли лучший метод?
Использование .NET 3.5.