Prej sem napisal preprost tečaj pomoči pri beleženju, kopiran iz drugega ogrodja, in test ni enostaven za uporabo, kot sledi:
Ta članek ponovno uvaja preprost razred beleženja, ki temelji na BlockingCollection.
BlockingCollection<T> je razred zbiranja, varen za niti in zagotavlja naslednjo funkcionalnost:
Uvedite model maker-user. Dodajanje in pridobivanje predmetov hkrati preko večnitnosti. Opcijska največja kapaciteta. Ko je zbirka prazna ali polna, jo blokirajo operacije vstavljanja in odstranjevanja. Poskusi vstavljanja in odstranjevanja ne blokirajo in ne potekajo določen čas. Enkapsulacija omogoča katerokoli vrsto zbirke IProducerConsumerCollection<T> Uporabite oznako preklica za izvedbo akcije preklica. Podprti sta dve vrsti enumov, ki uporabljata foreach (v Visual Basicu, For Each): enumi samo za branje. Enumeracija, ki odstrani element, ko je element enumeriran.
Microsoft predstavlja:Prijava do hiperpovezave je vidna.
BlockingCollection je zaporedna vrsta blokiranja, varna za niti in uporablja to funkcijo za implementacijo načina producent-potrošnik v procesu, kot so posredovanje sporočil, beleženje itd.
Pokliči njegovo metodo Add za dodajanje informacij v čakalno vrsto, in ko čakalna vrsta nima sporočil, bo IsCompleted vedno blokiral while zanko, zato ne bo povzročil mrtve zanke. Ko pride novo sporočilo, se sproži IsCompleted in while in vrne bool tip, kar povzroči nadaljevanje izvajanja, torej pridobivanje podatkov iz niti.
Prej smo nit blokirali tako, da smo klicali metodo WaitOne ManualResetEvent, klicali pa smo metodi Reset in Set za prenos signala, kot sledi:
Test zapiše 10.000 logov, kar traja manj kot 10 milisekund, kot je prikazano na spodnji sliki:
Koda je naslednja:
Prenos izvorne kode:
Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
|