Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24412|Atbildi: 1

[Avots] Atšķirība starp ManualResetEvent un AutoResetEvent, ko apgūst C# pavedieni

[Kopēt saiti]
Publicēts 31.05.2018 14:59:47 | | | |
Vispirms apspriedīsim ManualResetEvent, un diskusijas laikā es iejaukšos AutoResetEvent saturā, lai salīdzinātu:

ManualResetEvent var bloķēt vienu vai vairākus pavedienus, līdz tiek saņemts signāls, kas norāda ManualResetEvent pārtraukt bloķēt pašreizējo pavedienu.

Informācija par ManualResetEvent

.net/c# pavediena pavediens Apturēt un atsākt novecojušos risinājumus
https://www.itsvse.com/thread-4769-1-1.html
(Avots: Architect_Programmer)


Iedomājieties, ka objektam ManualResetEvent ir Būla tipa rekvizīts IsRelease, lai kontrolētu, vai bloķēt pašreizējo pavedienu. Mēs varam iestatīt šo rekvizītu, inicializējot, piemēram, ManualResetEvent event=new ManualResetEvent(false); Tas norāda, ka noklusējuma rekvizīts ir bloķēt pašreizējo pavedienu.

Koda piemērs:



Ņemiet vērā svarīgu atšķirību starp ManualResetEvent un AutoResetEvent šeit:

rokasgrāmata noteikti nosūtīs signālu gan 1. pavedienam, gan 2. pavedienam,Auto nosūtīs signālu tikai vienam no tiem nejauši.

Kāpēc vienu sauc par manuālu, bet otru - par automātisku? Es domāju, ka šis ir jautājums, kas rodas daudziem cilvēkiem, un tagad mēs izskatīsim šo jautājumu.

Tikai now_manualResetEvent . Komplekts(); Es domāju, ka visi saprot šo teikumu, ko var uzskatīt par patiesu IsRelease īpašību

_manualResetEvent.WaitOne(); Pēc signāla saņemšanas vairs nebloķē 1. pavedienu. IsRelease vērtība ir patiesa visā procesā pēc tam.Ja

Ja vēlaties atgriezt IsRelease vērtību uz false, vēlreiz jāizsauc metode _manualResetEvent.Reset().

Ja tas ir _autoResetEvent.set(), tad _autoResetEvent.WaitOne() automātiski iestatīs IsRelease vērtību uz false.

Tāpēc vienu sauc par automātisku, bet otru - manuālu.



Testa kods:







Iepriekšējo:. .NET ātrākais OOM objektu kartēšanas komponents Tiny Mapper projekta praksē
Nākamo:C# DEBUG atkļūdošanas informācijas drukāšana un izvade detalizēts skaidrojums
 Saimnieks| Publicēts 18.12.2024 20:30:44 |
Gan ManualResetEvent, gan AutoResetEvent pārmanto noNotikumu gaidīšanas rokturis, kā parādīts attēlā:



Atsauce:Hipersaites pieteikšanās ir redzama.

Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com