Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 19013|Atsakyti: 0

[Šaltinis] C# leidžia teisingai parašyti tik vieną programos egzempliorių

[Kopijuoti nuorodą]
Paskelbta 2016-12-10 14:35:34 | | |
C# programos leidžia tik vienam egzemplioriui paleisti teisingą kodą
http://www.itsvse.com/thread-3391-1-1.html
(Šaltinis: Architektas)


Žemiau esantis kodas taip pat neteisingas! Teisingas kodas, kaip aukščiau!


Kartais turime leisti paleisti tik vieną programos egzempliorių, o prasidėjus procesui, jei nustatoma, kad veikia programos egzempliorius, jis automatiškai nustos veikti. Paprastai jį įgyvendiname pagrindinėje funkcijoje per Mutex muteksą, kuris paprastai parašytas:

Kai ieškome atsakymų, dažnai ateiname ir išeiname skubėdami, nepaisydami "Mutex" savybių ir atsargumo priemonių. Po paprasto testo, gerai, paimkite ir naudokite. Šiuo metu mes nepastebime svarbios išankstinės sąlygos:Mutex pavadinimų konvencijos. Aukščiau pateiktas rašymo būdas veikia be jokių problemų vienam vartotojui; Naudojant kelis vartotojus, kiekvienas vartotojas gali paleisti vieną egzempliorių, todėl negalima garantuoti vieno egzemplioriaus.

Jei jums reikia jį naudoti terminalo serveryje ir leisti tik vieną egzempliorių, naudokite šį metodą:


Štai MSDN aprašymas:


Serveriuose, kuriuose veikia terminalo paslaugos, įvardytos sistemos muteksas gali turėti du matomumo lygius. Jei pavadinimas prasideda priešdėliu "Global\", muteksas matomas visose terminalo serverio sesijose. Jei pavadinimas prasideda priešdėliu "Local\", muteksas matomas tik jį sukūrusiame terminalo serverio seanse. Tokiu atveju kiekviena kita terminalo serverio sesija serveryje gali turėti atskirą muteksą tuo pačiu pavadinimu. Jei sukursite pavadintą muteksą nenurodydami priešdėlio, jis užims priešdėlį "Local\". Terminalo serverio sesijoje du muteksai su skirtingais vardų priešdėliais yra nepriklausomi muteksai, o du muteksai yra matomi visiems terminalo serverio sesijos procesams. Tai reiškia, kad priešdėlių pavadinimai "Global" ir "Local" apibūdina mutex pavadinimo diapazoną, palyginti su terminalo serverio seansu, o ne su procesu.






Ankstesnis:Registruojami COM sąveikos komponentai yra pilki
Kitą:C# programos leidžia tik vienam egzemplioriui paleisti teisingą kodą
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com