Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 19013|Risposta: 0

[Fonte] C# consente di eseguire la scrittura corretta di un'istanza dell'applicazione

[Copiato link]
Pubblicato su 10/12/2016 14:35:34 | | |
I programmi C# permettono a una sola istanza di eseguire il codice corretto
http://www.itsvse.com/thread-3391-1-1.html
(Fonte: Architetto)


Anche il codice qui sotto è sbagliato!! Codice corretto come sopra!!


A volte dobbiamo permettere che venga eseguita una sola istanza dell'applicazione e, quando il processo avvia, se scopre che un'istanza dell'applicazione è in esecuzione, si interrompe automaticamente. Di solito la implementiamo nella funzione Main tramite un mutex Mutex, che di solito si scrive:

Quando cerchiamo risposte, spesso entriamo e andiamo in fretta, ignorando le caratteristiche e le precauzioni di Mutex. Dopo un semplice test, ok, fallo e usalo. A questo punto, trascuriamo un prerequisito importante:Convenzioni di denominazione mutex. Il metodo di scrittura sopra descritto funziona senza alcun problema sotto un solo utente; Nel multi-utente, ogni utente può avviare un'istanza, quindi non è garantito che una singola istanza sia garantita.

Se devi usarlo su un terminal server e permetti solo un'istanza, usa il seguente metodo:


Ecco la descrizione della MSDN:


Sui server che eseguono servizi terminal, il mutex di sistema denominato può avere due livelli di visibilità. Se il nome inizia con il prefisso "Global\", il mutex è visibile in tutte le sessioni del terminal server. Se il nome inizia con il prefisso "Local\", il mutex è visibile solo nella sessione del terminal server che lo ha creato. In questo caso, ogni altra sessione del terminal server sul server può avere un mutex separato con lo stesso nome. Se crei un mutex con nome senza specificare un prefisso, prenderà il prefisso "Local\". In una sessione di server terminale, due mutex con prefissi di nome diversi sono mutex indipendenti, e i due mutex sono visibili a tutti i processi nella sessione del server terminale. Cioè, i nomi prefissi "Global" e "Local" descrivono l'intervallo del nome mutex rispetto alla sessione del terminal server, non al processo.






Precedente:La registrazione dei componenti per l'interoperabilità COM è disattiva
Prossimo:I programmi C# permettono a una sola istanza di eseguire il codice corretto
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com