Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 57872|Răspunde: 7

[Sursă] c# încapsulează o coadă universală QueueHelper

[Copiază linkul]
Postat pe 29.08.2018 10:39:11 | | | |
În dezvoltarea zilnică, putem folosi cozi, care sunt o structură de stocare ce poate realiza "primul intrat, primul ieșit".

Scenarii de aplicație: scrie jurnale, trimite emailuri etc

Dacă trebuie să înregistrăm jurnalul interfeței fiecărui utilizator care solicită datele noastre, nu trebuie să scriem un jurnal de fiecare dată când utilizatorul îl solicită, putem pune conținutul jurnalului în coadă și lăsa alte fire să îl execute, astfel încât să nu afecteze eficiența aplicației.

Un alt avantaj este că adăugarea de date la coadă în cazul concurenței, folosind un singur fir pentru a executa datele cozii, poate evita multe excepții; dacă concurența (multi-threaded), accesul la același fișier fizic va cauza excepții. (sub rezerva disponibilității)

Abordarea universală a cozilor:

Aceasta este o clasă abstractă și trebuie să moștenești această clasă de abstracție și să implementezi metoda Execute abstraction. Pentru că nu știu ce tip de date vrei să procesezi, aici se folosesc generice, adică Entitatea este de tip șir, parametrii metodei sunt de tip șir, iar datele pe care le procesezi sunt de tip șir.

Coada thread-safe ConcurrentQueue asigură că nu vor exista excepții într-un mediu multi-threaded.

ManualResetEvent pentru a controla semnalul firului de execuție,În trecut, verificam coada pentru date la câteva secunde sau minuteAcum, adăugăm datele la coadă și trebuie doar să transmitem un semnal!

Utilizare:

(Sfârșit)




Precedent:Procesul de producție al pachetului de instalare a proiectului Setup Vreau să copiez întrebarea fișierului principal de ieșire
Următor:Problema redis chinezilor nu poate fi prezentată corect
 Proprietarul| Postat pe 24.05.2019 10:13:59 |
Recomandă un cadru:

asp.net tutorial pentru framework-ul hangfire pentru sarcini de fundal
https://www.itsvse.com/thread-7611-1-1.html
(Sursa: Architect_Programmer)
Postat pe 10.09.2019 10:26:26 |
De ce metoda Execute din clasa Test nu este executată atunci când o execut?
 Proprietarul| Postat pe 10.09.2019 21:52:44 |
hano7758 Postat pe 2019-9-10 10:26
De ce metoda Execute din clasa Test nu este executată atunci când o execut?

Poți să postezi codul tău?
 Proprietarul| Postat pe 23.01.2021 11:53:46 |
.NET/C# se bazează pe coada de sarcini în fundal BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Postat pe 26.07.2021 14:09:53 |
Cum poți vedea codul
Postat pe 26.09.2022 22:20:08 |
Trebuie să învăț cum să o folosesc
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com