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: 41603|Răspunde: 2

[Sursă] .NET/C# implementează logare simplă bazată pe BlockingCollection

[Copiază linkul]
Postat la 2021-1-5 14:58:50 | | | |
Am scris un curs simplu de ajutor pentru logare înainte, copiat dintr-un alt framework, iar testul nu este ușor de folosit, după cum urmează:

C# este cea mai simplă metodă de a scrie jurnale
https://www.itsvse.com/thread-5111-1-1.html
Acest articol reimplementează o clasă simplă de logare bazată pe BlockingCollection.

Colecția de siguranță a firului .NET/C# (colare)
https://www.itsvse.com/thread-3769-1-1.html
<T> BlockingCollection este o clasă de colectare thread-safe care oferă următoarea funcționalitate:

Implementează modelul maker-user.
Adaugă și recuperează obiecte simultan prin multithreading.
Capacitate maximă opțională.
Când colecția este goală sau plină, este blocată de operațiuni de inserare și eliminare.
Încercările de inserare și eliminare nu blochează și nu apar pentru o perioadă specificată de timp.
Encapsularea implementează orice tip de colecție de IProducerConsumerCollection<T>
Folosește tag-ul anul pentru a efectua acțiunea de anulare.
Sunt suportate două tipuri de enum-uri care folosesc foreach (în Visual Basic, For Each): enum-uri doar pentru citire. O enumerare care elimină un element atunci când un element este enumerat.


Microsoft introduce:Autentificarea cu hyperlink este vizibilă.

BlockingCollection este o coadă de blocare sigură pentru firele de execuție, folosind această funcție pentru a implementa modul producător-consumator în cadrul procesului, cum ar fi redirecționarea mesajelor, logarea etc.

Apelează metoda Add pentru a adăuga informații în coadă, iar când coada nu are mesaje, IsCompleted va bloca întotdeauna bucla while, astfel încât să nu cauzeze o buclă moartă. Când apare un mesaj nou, IsCompleted in while va fi declanșat și va returna tipul bool, ceea ce va duce la continuarea execuției, adică preluarea datelor din thread.


Anterior, am blocat firul apelând metoda WaitOne din ManualResetEvent, chemând metodele Reset și Set pentru a transmite semnalul, după cum urmează:

c# încapsulează o coadă universală QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


Testul scrie 10.000 de loguri, ceea ce durează mai puțin de 10 milisecunde, așa cum se arată în figura de mai jos:



Codul este următorul:

Descărcare cod sursă:

Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rogRăspunde





Precedent:warning: LF will be replaced by CRLF in xxxx.
Următor:Optimizarea interogărilor Entity Framework WITH(NOLOCK)
 Proprietarul| Postat la 2021-1-23 11:53:55 |
.NET/C# se bazează pe coada de sarcini în fundal BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Postat la 2023-4-24 22:36:31 |
Material de studiu excelent, foarte bun
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