Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 24385|Antwoord: 4

[Bron] C#-programma's staan slechts één instantie toe om de juiste code uit te voeren

[Link kopiëren]
Geplaatst op 10-12-2016 14:55:50 | | | |


Ik heb een verkeersmonitoringssoftware geschreven die ik wil dat de computer maar één keer draait, en de code is als volgt:



Zoek meteen, klik op de software, dan verschijnt er "Een instantie is uitgevoerd", maar,Na 30 seconden wachten klik je op de software, en draait het weer succesvolEén keer!!

Jammer.De bovenstaande code werkt prima in DEBUG-modus, maar werkt niet in RELEASE.
Het probleem is dat Mutex wordt gedeclareerd als een lokale variabele en in relese mode vanwege optimalisatieproblemen, mogelijk omdat de compiler denkt dat Mutex niet meer wordt gebruikt

Gebruikt, gerecycled, door mezelf getest,

Leg Mutex erbovenop en stel het als statische variabele in op !!RechtsDe code is als volgt:





Partituur

Aantal deelnemers1MB+1 bijdragen+1 Instorting reden
Een kleine beginner die graag leert + 1 + 1 Zoals één!

Bekijk alle beoordelingen





Vorig:C# laat alleen het correct schrijven van één instantie van de applicatie draaien
Volgend:Hoe installeer je software automatisch op.
 Huisbaas| Geplaatst op 10-12-2016 15:02:58 |
Statische velden worden niet gerecycled door de GC, statische velden worden toegewezen in de Loader-heap, niet-GC-heap, en worden niet door de GC beheerd.

Statische leden (van statische klassen of niet) worden alleen gerecycled wanneer ze AppDomain.UnLoad bereiken. Statische klassen mogen alleen statische leden hebben
Geplaatst op 06-12-2017 11:48:05 |
Geleerd, bedankt voor het delen
 Huisbaas| Geplaatst op 23-02-2018 14:59:01 |
Andere implementaties:

Opstartmethode:



 Huisbaas| Geplaatst op 03-10-2025 16:10:11 |
.NET/C# implementeert programma singleton gebaseerd op Mutex en MemoryMappedFile
https://www.itsvse.com/thread-10808-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com