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

Widok: 19013|Odpowiedź: 0

[Źródło] C# pozwala na poprawne zapisanie tylko jednej instancji aplikacji

[Skopiuj link]
Opublikowano 10.12.2016 14:35:34 | | |
Programy w C# pozwalają tylko jednej instancji uruchomić poprawny kod
http://www.itsvse.com/thread-3391-1-1.html
(Źródło: Architect)


Poniższy kod też jest błędny!! Poprawny kod jak wyżej!!


Czasami musimy pozwolić na uruchomienie tylko jednej instancji aplikacji, a gdy proces się uruchomi, jeśli wykryje, że jakaś instancja aplikacji działa, automatycznie przestaje działać. Zazwyczaj implementujemy ją w funkcji głównej za pomocą mutexu Mutex, który zwykle jest zapisany:

Gdy szukamy odpowiedzi, często przychodzimy i odchodzimy w pośpiechu, ignorując funkcje i środki ostrożności Mutex. Po prostym teście, OK, weź to i używaj. W tym momencie pomijamy ważny warunek wstępny:Konwencje nazewnictwa mutex. Powyższa metoda zapisu działa bez problemów przy użyciu jednego użytkownika; W trybie wieloużytkownikowym każdy użytkownik może uruchomić jedną instancję, więc nie można zagwarantować istnienia jednej instancji.

Jeśli musisz używać go na serwerze terminalowym i pozwalasz tylko na jedną instancję, użyj następującej metody:


Oto opis MSDN:


Na serwerach uruchamiających usługi terminalowe, nazwane system mutex mogą mieć dwa poziomy widoczności. Jeśli nazwa zaczyna się od prefiksu "Global\", mutex jest widoczny we wszystkich sesjach serwera terminala. Jeśli nazwa zaczyna się od prefiksu "Local\", mutex jest widoczny tylko w sesji serwera terminala, która go utworzyła. W takim przypadku każda sesja serwera terminala na serwerze może mieć osobny mutex o tej samej nazwie. Jeśli utworzysz nazwany mutex bez określenia prefiksu, przyjmie on prefiks "Local\". W sesji serwera terminalowego dwa mutexy o różnych prefiksach nazw są niezależnymi mutexami, a oba mutexy są widoczne dla wszystkich procesów w sesji serwera terminala. Oznacza to, że nazwy prefiksów "Global" i "Local" opisują zakres nazwy mutex względem sesji serwera terminala, a nie samego procesu.






Poprzedni:Rejestracja komponentów do interoperacyjności COM jest wyszarzona
Następny:Programy w C# pozwalają tylko jednej instancji uruchomić poprawny kod
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