Powiel możliwe:
What is the correct way to create a single instance application?Zapewnienie tylko jedna instancja aplikacji
Mam app WinForm, który uruchamia ekran powitalny za pomocą następującego kodu:
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;
The powyżej znajduje się w kodzie głównym kodu formularza i wywoływana z procedury obsługi zdarzenia load.
Jak jednak upewnić się, że załadowane zostanie tylko jedno wystąpienie aplikacji? W procedurze obsługi zdarzeń obciążenia głównego formularza mogę sprawdzić, czy lista procesów znajduje się w systemie (przez GetProcessesByName (...)), ale czy istnieje lepsza metoda?
Korzystanie z platformy .NET 3.5.
Należy zadzwonić 'Application.Run (splashForm)' zamiast od 'DoEvents()' loop. – SLaks