See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 41603|Vastuse: 2

[Allikas] .NET/C# rakendab lihtsat logimist, mis põhineb BlockingCollectionil

[Kopeeri link]
Postitatud 2021-1-5 14:58:50 | | | |
Kirjutasin varem lihtsa logimise abiklassi, kopeerisin selle teisest raamistikust, ja test pole lihtne kasutada, järgmiselt:

C# on logide kirjutamiseks kõige lihtsam viis
https://www.itsvse.com/thread-5111-1-1.html
See artikkel taasrakendab lihtsa logimisklassi, mis põhineb BlockingCollectionil.

.NET/C# Niidiohutuse kogu (võrdlus)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> on lõimede jaoks turvaline kogumisklass, mis pakub järgmist funktsionaalsust:

Rakendage maker-user mudelit.
Lisa ja too esemeid samaaegselt multithreadingu kaudu.
Valikuline maksimaalne mahutavus.
Kui kogu on tühi või täis, blokeeritakse see lisamise ja eemaldamise operatsioonidega.
Lisamis- ja eemaldamiskatsed ei blokeeri ega toimu kindla aja jooksul.
Kapseldamine rakendab mis tahes IProducerConsumerCollectioni <T>kollektsiooni tüüpi
Kasuta tühistamismärgist tühistamistoimingu sooritamiseks.
Toetatud on kahte tüüpi enumeid, mis kasutavad foreach (Visual Basicus, For Each), on toetatud: ainult lugemiseks mõeldud enumid. Loendamine, mis eemaldab eseme, kui üksus on loendatud.


Microsoft tutvustab:Hüperlingi sisselogimine on nähtav.

BlockingCollection on lõimekindel blokeerimisjärjekord, mis kasutab seda funktsiooni tootja-tarbija režiimi rakendamiseks protsessis, näiteks sõnumite edastamine, logimine jne.

Kutsu selle Add meetod, et lisada infot järjekorda, ja kui järjekorras pole sõnumeid, blokeerib IsCompleted alati while-tsükli, nii et see ei põhjusta surnud tsüklit. Kui ilmub uus sõnum, käivitub IsCompleted in while ja see tagastab bool-tüübi, mis põhjustab täitmise jätkumise, st andmete toomise lõimest.


Varem blokeerisime lõime, kutsudes ManualResetEventi WaitOne meetodit, kutsudes signaali edastamiseks Reset ja Set meetodeid järgmiselt:

c# kapseldab universaalset QueueHelperi järjekorda
https://www.itsvse.com/thread-5029-1-1.html


Test kirjutab 10 000 logi, mis võtab vähem kui 10 millisekundit, nagu alloleval joonisel näidatud:



Kood on järgmine:

Lähtekoodi allalaadimine:

Turistid, kui soovite näha selle postituse peidetud sisu, palunVastuse





Eelmine:warning: LF will be replaced by CRLF in xxxx.
Järgmine:Entity Framework päringute optimeerimine WITH(NOLOCK)
 Üürileandja| Postitatud 2021-1-23 11:53:55 |
.NET/C# põhineb BlockingCollectioni taustaülesannete järjekorras
https://www.itsvse.com/thread-9528-1-1.html

Postitatud 2023-4-24 22:36:31 |
Suurepärane, väga hea õppematerjal
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com