Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 19013|Antwoord: 0

[Bron] C# laat alleen het correct schrijven van één instantie van de applicatie draaien

[Link kopiëren]
Geplaatst op 10-12-2016 14:35:34 | | |
C#-programma's staan slechts één instantie toe om de juiste code uit te voeren
http://www.itsvse.com/thread-3391-1-1.html
(Bron: Architect)


De onderstaande code is ook fout!! Correcte code zoals hierboven!!


Soms moeten we slechts één instantie van de applicatie laten draaien, en wanneer het proces start, als het merkt dat een instantie van de applicatie draait, stopt het automatisch met draaien. We implementeren het meestal in de Main-functie via een Mutex-mutex, die meestal als volgt wordt geschreven:

Wanneer we naar antwoorden zoeken, komen en gaan we vaak haastig, waarbij we de kenmerken en voorzorgsmaatregelen van Mutex negeren. Na een simpele test, oké, neem het en gebruik het. Op dit punt negeren we een belangrijke vereiste:Mutex naamgevingsconventies. De bovenstaande schrijfmethode werkt zonder problemen onder één enkele gebruiker; Bij multi-user kan elke gebruiker één instantie starten, dus één enkele instantie kan niet gegarandeerd worden.

Als je het op een terminalserver moet gebruiken en slechts één instantie toestaat, gebruik dan de volgende methode:


Hier is de beschrijving van MSDN:


Op servers die terminalservices draaien, kan benoemde systeemmutex twee zichtniveaus hebben. Als de naam begint met het voorvoegsel "Global\", is de mutex zichtbaar in alle terminalserversessies. Als de naam begint met het voorvoegsel "Local\", is de mutex alleen zichtbaar in de terminalserversessie die het heeft aangemaakt. In dit geval kan elke andere terminalserversessie op de server een aparte mutex met dezelfde naam hebben. Als je een benoemde mutex aanmaakt zonder een prefix te specificeren, krijgt hij het prefix "Local\". In een terminalserversessie zijn twee mutexen met verschillende naamprefixen onafhankelijke mutexen, en de twee mutexen zijn zichtbaar voor alle processen in de terminalserversessie. Dat wil zeggen, de voorvoegsels "Globaal" en "Lokaal" beschrijven het bereik van de mutexnaam ten opzichte van de terminalserversessie, niet van het proces.






Vorig:Het registreren van componenten voor COM-interop is grijs gemaakt
Volgend:C#-programma's staan slechts één instantie toe om de juiste code uit te voeren
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com