Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 41603|Odpoveď: 2

[Zdroj] .NET/C# implementuje jednoduché logovanie založené na BlockingCollection

[Kopírovať odkaz]
Zverejnené 5. júna 2021 o 14:58:50 | | | |
Predtým som napísal jednoduchú triedu pomoci s logovaním, skopírovanú z iného frameworku, a test nie je jednoduchý na používanie, a to nasledovne:

C# je najjednoduchší spôsob, ako zapisovať logy
https://www.itsvse.com/thread-5111-1-1.html
Tento článok znovu implementuje jednoduchú triedu logovania založenú na BlockingCollection.

.NET/C# Zber bezpečnosti vlákien (kolácia)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> je trieda kolekcií bezpečná pre vlákna, ktorá poskytuje nasledujúcu funkcionalitu:

Zaviesť model tvorca-užívateľ.
Pridajte a načítavajte položky súčasne cez multithreading.
Voliteľná maximálna kapacita.
Keď je kolekcia prázdna alebo plná, je blokovaná operáciami vkladania a odstránenia.
Pokusy o vloženie a odstránenie neblokujú ani neprebiehajú po stanovený čas.
Zapuzdrenie implementuje akýkoľvek typ kolekcie IProducerConsumerCollection<T>
Použite značku cancel na vykonanie akcie zrušenia.
Podporované sú dva typy enumov, ktoré používajú foreach (vo Visual Basic, For Each): enumy len na čítanie. Enumerácia, ktorá odstráni položku pri jej vyčíslovaní.


Microsoft predstavuje:Prihlásenie na hypertextový odkaz je viditeľné.

BlockingCollection je blokovacia fronta bezpečná pre vlákna, využívajúca túto funkciu na implementáciu režimu producent-spotrebiteľ v rámci procesu, ako je preposielanie správ, logovanie a podobne.

Zavolajte jeho metódu Add na pridanie informácií do fronty a keď fronta nemá žiadne správy, IsCompleted vždy zablokuje while slučku, takže nespôsobí mŕtvu slučku. Keď vyjde nová správa, spustí sa IsCompleted in while a vráti bool typ, čo spôsobí pokračovanie vykonávania, teda načítanie dát z vlákna.


Predtým sme vlákno blokovali volaním metódy WaitOne ManualResetEvent, volaním metód Reset a Set na odoslanie signálu, nasledovne:

c# zapuzdrí univerzálnu QueueHelper frontu
https://www.itsvse.com/thread-5029-1-1.html


Test zapíše 10 000 logov, čo trvá menej ako 10 milisekúnd, ako je znázornené na obrázku nižšie:



Kód je nasledovný:

Stiahnutie zdrojového kódu:

Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím.Odpoveď





Predchádzajúci:warning: LF will be replaced by CRLF in xxxx.
Budúci:Optimalizácia dotazov v rámci entít pomocou (NOLOCK)
 Prenajímateľ| Zverejnené 2021-1-23 11:53:55 |
.NET/C# je založený na pozadí fronty úloh BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Zverejnené 2023-4-24 22:36:31 |
Výborné, veľmi dobré študijné materiály
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com