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

Bekijken: 24412|Antwoord: 1

[Bron] Het verschil tussen ManualResetEvent en AutoResetEvent wordt geleerd door C#-threads

[Link kopiëren]
Geplaatst op 31-05-2018 14:59:47 | | | |
Laten we eerst ManualResetEvent bespreken, en ik zal wat AutoResetEvent-inhoud tijdens de discussie afwisselen om te vergelijken:

ManualResetEvent kan één of meer threads blokkeren totdat er een signaal wordt ontvangen dat ManualResetEvent vertelt te stoppen met blokkeren van de huidige thread.

Informatie over ManualResetEvent

.net/c# Threadthread Suspend en Resume maakt verouderde oplossingen
https://www.itsvse.com/thread-4769-1-1.html
(Bron: Architect_Programmer)


Stel je voor dat het ManualResetEvent-object een Booleaanse type-eigenschap, IsRelease, heeft om te bepalen of de huidige thread geblokkeerd moet worden. We kunnen deze eigenschap instellen bij het initialiseren, zoals ManualResetEvent event=new ManualResetEvent(false); Dit geeft aan dat de standaardeigenschap is om de huidige thread te blokkeren.

Codevoorbeeld:



Let hier op een belangrijk verschil tussen ManualResetEvent en AutoResetEvent:

De handleiding zal zeker een signaal sturen naar zowel schroefdraad 1 als schroefdraad 2.Auto stuurt alleen willekeurig een signaal naar één van hen.

Waarom heet de ene handmatig en de andere auto? Ik denk dat dit een vraag is die veel mensen stellen, en nu zullen we deze vraag bekijken.

Gewoon now_manualResetEvent. Set(); Ik denk dat iedereen deze zin begrijpt, die kan worden gezien als het plaatsen van de eigenschap van IsRelease als waar

_manualResetEvent.WaitOne(); Thread 1 blokkeert niet langer na ontvangst van een signaal. De waarde van IsRelease is gedurende het hele proces daarna aanwezig.Als

Als je de waarde van IsRelease naar false wilt terugbrengen, moet je de _manualResetEvent.Reset()-methode opnieuw aanroepen.

Als het _autoResetEvent.set() is, zal _autoResetEvent.WaitOne() automatisch de waarde van IsRelease op false zetten.

Daarom heet de ene auto en de andere handgeschakeld.



Testcode:







Vorig:. .NET's snelste OOM-objectmappingcomponent, Tiny Mapper, in projectpraktijk
Volgend:C# DEBUG-informatie, printen en uitvoeren gedetailleerde uitleg
 Huisbaas| Geplaatst op 18-12-2024 20:30:44 |
Zowel ManualResetEvent als AutoResetEvent erven vanEventWaitHandle, zoals getoond in de onderstaande figuur:



Referentie:De hyperlink-login is zichtbaar.

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