Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 24412|Atsakyti: 1

[Šaltinis] Skirtumas tarp "ManualResetEvent" ir "AutoResetEvent", išmoktas iš C# gijų

[Kopijuoti nuorodą]
Paskelbta 2018-05-31 14:59:47 | | | |
Pirmiausia aptarkime "ManualResetEvent", o diskusijos metu įterpsiu šiek tiek "AutoResetEvent" turinio, kad palyginčiau:

ManualResetEvent gali blokuoti vieną ar daugiau gijų, kol gaunamas signalas, nurodantis ManualResetEvent nustoti blokuoti dabartinę giją.

Informacija apie ManualResetEvent

.net/c# Siūlų gija Sustabdyti ir atnaujinti pasenusius sprendimus
https://www.itsvse.com/thread-4769-1-1.html
(Šaltinis: Architect_Programmer)


Įsivaizduokite, kad objektas ManualResetEvent turi Bulio tipo ypatybę IsRelease, kad būtų galima kontroliuoti, ar blokuoti dabartinę giją. Šią savybę galime nustatyti inicijuojant, pvz., ManualResetEvent event=new ManualResetEvent(false); Tai rodo, kad numatytoji savybė yra blokuoti dabartinę giją.

Kodo pavyzdys:



Atkreipkite dėmesį į svarbų skirtumą tarp ManualResetEvent ir AutoResetEvent čia:

vadovas tikrai nusiųs signalą tiek į 1, tiek į 2 sriegį,Automatinis signalas vienam iš jų išsiųs tik atsitiktinai.

Kodėl vienas vadinamas rankiniu, o kitas - automatiniu? Manau, kad tai yra daugelio žmonių klausimas, ir dabar mes panagrinėsime šį klausimą.

Tiesiog now_manualResetEvent . Rinkinys(); Manau, kad visi supranta šį sakinį, kuris gali būti laikomas IsRelease savybės teisingumu

_manualResetEvent.WaitOne(); Gavus signalą, nebeblokuoja 1 gijos. "IsRelease" vertė galioja viso proceso metu.Jeigu

Jei norite grąžinti IsRelease reikšmę į false, turite dar kartą iškviesti metodą _manualResetEvent.Reset().

Jei jis yra _autoResetEvent.set(), tada _autoResetEvent.WaitOne() automatiškai nustatys IsRelease reikšmę į false.

Štai kodėl vienas vadinamas automatiniu, o kitas - rankiniu.



Bandymo kodas:







Ankstesnis:. .NET greičiausias OOM objektų atvaizdavimo komponentas "Tiny Mapper" projekto praktikoje
Kitą:C# DEBUG derinimo informacijos spausdinimas ir išvestis išsamus paaiškinimas
 Savininkas| Paskelbta 2024-12-18 20:30:44 |
Tiek ManualResetEvent, tiek AutoResetEvent paveldi išĮvykių laukimo rankena, kaip parodyta toliau pateiktame paveikslėlyje:



Nuoroda:Hipersaito prisijungimas matomas.

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com