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ă:
Acest articol reimplementează o clasă simplă de logare bazată pe BlockingCollection.
<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ă:
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ă rog Răspunde
|