Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 24385|Svar: 4

[Källa] C#-program tillåter bara en instans att köra korrekt kod

[Kopiera länk]
Publicerad på 2016-12-10 14:55:50 | | | |


Jag skrev en trafikövervakningsprogramvara som jag vill att datorn ska köra bara en gång, och koden är följande:



Hitta omedelbart, klicka på programvaran, den kommer att visa "En instans har körts", men,Efter att ha väntat i 30 sekunder, klicka sedan på programvaran, och då körs den igenEn gång!!

Det är synd.Ovanstående kod fungerar bra i DEBUG-läge, men fungerar inte i RELEASE.
Problemet är att Mutex deklareras som en lokal variabel och är i relese-läge på grund av optimeringsproblem, möjligen för att kompilatorn tror att Mutex inte längre används

Använda, återvunnet, testat av mig själv,

Lägg Mutex ovanpå och ställ in den som en statisk variabel till !!HögerKoden är följande:





Tjog

Antal deltagare1MB+1 bidra+1 Kollaps förnuft
En liten nybörjare som älskar att lära sig + 1 + 1 Som en!

Se alla betyg





Föregående:C# tillåter endast korrekt skrivning av en instans av applikationen att köras
Nästa:Hur man sätter upp mjukvarustart automatiskt.
 Hyresvärd| Publicerad på 2016-12-10 15:02:58 |
Statiska fält återanvänds inte av GC, statiska fält allokeras i Loader-heapen, icke-GC-heapen, och kontrolleras inte av GC.

Statiska medlemmar (av statiska klasser eller inte) återanvänds endast när de når AppDomain.UnLoad. Statiska klasser får endast ha statiska medlemmar
Publicerad på 2017-12-06 11:48:05 |
Lärt mig, tack för att du delade med dig
 Hyresvärd| Publicerad på 2018-02-23 14:59:01 |
Andra implementationer:

Startmetod:



 Hyresvärd| Publicerad på 2025-10-03 16:10:11 |
.NET/C# implementerar programmet singleton baserat på Mutex och MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com