Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 19013|Odgovoriti: 0

[Vir] C# omogoča pravilno pisanje le ene instance aplikacije

[Kopiraj povezavo]
Objavljeno na 10. 12. 2016 14:35:34 | | |
C# programi dovoljujejo le enemu primeru, da zažene pravilno kodo
http://www.itsvse.com/thread-3391-1-1.html
(Vir: Architect)


Spodnja koda je prav tako napačna!! Pravilna koda kot zgoraj!!


Včasih moramo dovoliti, da se zažene le ena instanca aplikacije, in ko se proces začne, če ugotovi, da se instanca aplikacije izvaja, se samodejno ustavi. Običajno jo implementiramo v glavni funkciji preko mutex mutexa, ki je običajno zapisan takole:

Ko iščemo odgovore, pogosto prihajamo in odhajamo v naglici, pri tem pa ignoriramo funkcije in previdnostne ukrepe Mutexa. Po preprostem testu, v redu, vzemi in uporabi. Na tej točki spregledamo pomemben predpogoj:Mutex poimenovalne konvencije. Zgornja metoda pisanja deluje brez težav pod enim uporabnikom; Pri večuporabniškem načinu lahko vsak uporabnik začne eno instanco, zato ena instanca ni zagotovljena.

Če ga morate uporabljati na terminalskem strežniku in dovolite le eno instanco, uporabite naslednjo metodo:


Tukaj je opis MSDN:


Na strežnikih, ki poganjajo terminalske storitve, ima imenovani sistemski mutex lahko dve ravni vidnosti. Če ime začne s predpono "Global\", je mutex viden v vseh sejah terminalskega strežnika. Če ime začne s predpono "Local\", je mutex viden le v seji terminalskega strežnika, ki ga je ustvarila. V tem primeru ima lahko vsaka druga seja terminalskega strežnika na strežniku ločen mutex z enakim imenom. Če ustvarite poimenovani mutex brez določitve predpone, bo prevzel predpono "Local\". V seji terminalskega strežnika sta dva mutexa z različnimi imenskimi predponami neodvisna mutex, oba mutex pa sta vidna vsem procesom v seji terminalskega strežnika. To pomeni, da predponi "Global" in "Local" opisujeta obseg imena mutex glede na sejo terminalskega strežnika, ne pa glede na proces.






Prejšnji:Registracija komponent za COM interop je siva
Naslednji:C# programi dovoljujejo le enemu primeru, da zažene pravilno kodo
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com