Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24385|Odpowiedź: 4

[Źródło] Programy w C# pozwalają tylko jednej instancji uruchomić poprawny kod

[Skopiuj link]
Opublikowano 10.12.2016 14:55:50 | | | |


Napisałem oprogramowanie do monitorowania ruchu, które chcę, aby komputer uruchomił tylko raz, a kod jest następujący:



Znajdź natychmiast i kliknij na oprogramowanie, pojawi się komunikat "Instancja została uruchomiona", ale,Po 30 sekundach kliknięcia na oprogramowanie i uruchomienie ponownie pomyślnieRaz!!

Szkoda.Powyższy kod działa dobrze w trybie DEBUG, ale nie działa w RELEASE.
Problem polega na tym, że Mutex jest deklarowany jako zmienna lokalna i w trybie relese z powodu problemów z optymalizacją, prawdopodobnie dlatego, że kompilator uważa, że Mutex nie jest już używany

używane, recyklingowane, testowane przeze mnie,

Na wierzch połóż Mutex i ustaw go jako zmienną statyczną, żeby !!PrawyKod jest następujący:





Wynik

Liczba uczestników1MB+1 przyczynić się+1 Zapaść powód
Mały nowicjusz, który uwielbia się uczyć + 1 + 1 Jak jedna!

Zobacz wszystkie oceny





Poprzedni:C# pozwala na poprawne zapisanie tylko jednej instancji aplikacji
Następny:Jak skonfigurować automatyczne uruchamianie oprogramowania.
 Ziemianin| Opublikowano 10.12.2016 15:02:58 |
Pola statyczne nie są recyklingowane przez GC, pola statyczne są przydzielane do kopca ładowającego, nie-GC i nie są kontrolowane przez GC.

Elementy statyczne (klas statycznych lub nie) są powtarzane tylko wtedy, gdy dotrą do AppDomain.UnLoad. Klasy statyczne mogą mieć tylko statyczne elementy
Opublikowano 06.12.2017 11:48:05 |
Nauczyłem się, dziękuję za podzielenie się
 Ziemianin| Opublikowano 23.02.2018 14:59:01 |
Inne implementacje:

Metoda startowania:



 Ziemianin| Opublikowano 03.10.2025 16:10:11 |
.NET/C# implementuje program singleton na podstawie Mutex i MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com