Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 19013|Atbildi: 0

[Avots] C# ļauj pareizi rakstīt tikai vienu lietojumprogrammas instanci

[Kopēt saiti]
Publicēts 10.12.2016 14:35:34 | | |
C# programmas ļauj tikai vienai instancei palaist pareizo kodu
http://www.itsvse.com/thread-3391-1-1.html
(Avots: Arhitekts)


Zemāk esošais kods arī ir nepareizs! Pareizs kods, kā iepriekš!


Dažreiz mums ir jāļauj palaist tikai vienu lietojumprogrammas instanci, un, kad process sākas, ja tiek konstatēts, ka darbojas lietojumprogrammas instance, tas automātiski pārtrauks darbību. Mēs to parasti īstenojam galvenajā funkcijā, izmantojot Mutex mutex, kas parasti ir rakstīts:

Kad mēs meklējam atbildes, mēs bieži nākam un ejam steigā, ignorējot Mutex funkcijas un piesardzības pasākumus. Pēc vienkārša testa, labi, ņemiet to un izmantojiet to. Šajā brīdī mēs ignorējam svarīgu priekšnoteikumu:Mutex nosaukumu konvencijas. Iepriekš minētā rakstīšanas metode darbojas bez problēmām ar vienu lietotāju; Vairāku lietotāju gadījumā katrs lietotājs var startēt vienu instanci, tāpēc nevar garantēt vienu instanci.

Ja tas ir jāizmanto termināļa serverī un jāatļauj tikai viens gadījums, izmantojiet šādu metodi:


Šeit ir MSDN apraksts:


Serveros, kuros darbojas termināļa pakalpojumi, nosauktās sistēmas muteksam var būt divi redzamības līmeņi. Ja nosaukums sākas ar prefiksu "Global\", mutekss ir redzams visās termināļa servera sesijās. Ja nosaukums sākas ar prefiksu "Local\", mutex ir redzams tikai termināļa servera sesijā, kas to izveidoja. Šajā gadījumā katrai citai termināļa servera sesijai serverī var būt atsevišķs mutekss ar tādu pašu nosaukumu. Ja izveidojat nosauktu muteksu, nenorādot prefiksu, tas izmantos prefiksu "Local\". Termināļa servera sesijā divi muteksi ar dažādiem nosaukumu prefiksiem ir neatkarīgi muteksi, un abi muteksi ir redzami visiem termināļa servera sesijas procesiem. Tas nozīmē, ka prefiksa nosaukumi "Global" un "Local" apraksta mutex nosaukuma diapazonu attiecībā pret termināļa servera sesiju, nevis procesu.






Iepriekšējo:COM sadarbības komponentu reģistrēšana ir pelēkota
Nākamo:C# programmas ļauj tikai vienai instancei palaist pareizo kodu
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com