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

Rodinys: 41603|Atsakyti: 2

[Šaltinis] .NET/C# įgyvendina paprastą registravimą, pagrįstą BlockingCollection

[Kopijuoti nuorodą]
Publikuota: 2021-1-5 14:58:50 | | | |
Aš parašiau paprastą registravimo pagalbos klasę anksčiau, nukopijuota iš kitos sistemos, ir testas nėra lengva naudoti, taip:

C# yra lengviausias būdas rašyti žurnalus
https://www.itsvse.com/thread-5111-1-1.html
Šiame straipsnyje iš naujo įdiegta paprasta registravimo klasė, pagrįsta BlockingCollection.

.NET/C# gijų saugos rinkinys (gretinimas)
https://www.itsvse.com/thread-3769-1-1.html
"BlockingCollection<T>" yra saugi rinkimo klasė, teikianti šias funkcijas:

Įdiekite kūrėjo-vartotojo modelį.
Įtraukite ir gaukite elementus vienu metu naudodami kelių gijų funkciją.
Pasirenkama maksimali talpa.
Kai rinkinys tuščias arba pilnas, jis blokuojamas įterpimo ir pašalinimo operacijomis.
Bandymai įterpti ir pašalinti neblokuojami arba nevyksta tam tikrą laiką.
Inkapsuliavimas įgyvendina bet kokio tipo "IProducerConsumerCollection<T>" rinkinį
Naudokite atšaukimo žymą, kad atliktumėte atšaukimo veiksmą.
Palaikomi dviejų tipų išvardijimai, naudojantys foreach (Visual Basic, For Each): tik skaitomi išvardijimai. Išvardijimas, kuris pašalina elementą, kai elementas išvardijamas.


"Microsoft" pristato:Hipersaito prisijungimas matomas.

"BlockingCollection" yra saugi blokavimo eilė, naudojanti šią funkciją gamintojo-vartotojo režimui įgyvendinti, pvz., pranešimų persiuntimui, registravimui ir kt.

Iškvieskite jo metodą Pridėti, kad įtrauktumėte informaciją į eilę, o kai eilėje nėra pranešimų, "IsCompleted" visada užblokuos kol kilpą, todėl nesukels negyvos kilpos. Kai pasirodys naujas pranešimas, bus suaktyvintas IsCompleted in while ir grąžins bool tipą, todėl vykdymas bus tęsiamas, tai yra, duomenų gavimas iš gijos.


Anksčiau užblokavome giją, iškviesdami "ManualResetEvent" metodą "WaitOne", iškviesdami "Reset" ir "Set" metodus, kad perduotume signalą, taip:

c# inkapsuliuoja universalią QueueHelper eilę
https://www.itsvse.com/thread-5029-1-1.html


Testas rašo 10 000 žurnalų, o tai trunka mažiau nei 10 milisekundžių, kaip parodyta toliau pateiktame paveikslėlyje:



Kodas yra toks:

Šaltinio kodo atsisiuntimas:

Turistai, jei norite pamatyti paslėptą šio įrašo turinį, prašomeAtsakyti





Ankstesnis:warning: LF will be replaced by CRLF in xxxx.
Kitą:Objekto sistemos užklausų optimizavimas SU(NOLOCK)
 Savininkas| Publikuota: 2021-1-23 11:53:55 |
.NET/C# yra pagrįstas BlockingCollection fonine užduočių eile
https://www.itsvse.com/thread-9528-1-1.html

Publikuota: 2023-4-24 22:36:31 |
Puiki, labai gera studijų medžiaga
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