Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 41603|Odpověď: 2

[Zdroj] .NET/C# implementuje jednoduché logování založené na BlockingCollection

[Kopírovat odkaz]
Zveřejněno 5. 1. 2021 14:58:50 | | | |
Už jsem napsal jednoduchou třídu nápovědy pro logování, zkopírovanou z jiného frameworku, a test není snadno použitelný, a to následovně:

C# je nejjednodušší způsob, jak psát logy
https://www.itsvse.com/thread-5111-1-1.html
Tento článek znovu implementuje jednoduchou třídu logování založenou na BlockingCollection.

.NET/C# Sbírka bezpečnosti vláken (kolace)
https://www.itsvse.com/thread-3769-1-1.html
BlockingCollection<T> je třída kolekcí bezpečná pro vlákna, která poskytuje následující funkce:

Zaveďte model maker-uživatel.
Přidávejte a načítajte položky současně pomocí vícevláknového zpracování.
Volitelná maximální kapacita.
Když je kolekce prázdná nebo plná, je blokována operacemi vložení a odstranění.
Pokusy o vložení a odstranění neblokují ani neprobíhají po stanovenou dobu.
Encapsulation implementuje jakýkoli typ kolekce IProducerConsumerCollection<T>
Použijte značku cancel k provedení akce cancel.
Podporovány jsou dva typy enumů, které používají foreach (ve Visual Basicu For Each): enumy pouze pro čtení. Enumerace, která odstraní položku při jejím vyjmenování.


Microsoft představuje:Přihlášení k hypertextovému odkazu je viditelné.

BlockingCollection je fronta blokování bezpečná pro vlákna, která využívá tuto funkci k implementaci režimu producent-spotřebitel v rámci procesu, jako je přeposílání zpráv, logování apod.

Použij metodu Add pro přidání informací do fronty a když fronta nemá žádné zprávy, IsCompleted vždy zablokuje while smyčku, takže nezpůsobí mrtvou smyčku. Když přijde nová zpráva, spustí se IsCompleted in while a vrátí typ bool, což způsobí pokračování vykonání, tedy načtení dat z vlákna.


Dříve jsme vlákno blokovali voláním metody WaitOne ManualResetEvent, voláním metod Reset a Set pro předání signálu, a to následovně:

c# zapouzdřuje univerzální frontu QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


Test zapíše 10 000 logů, což trvá méně než 10 milisekund, jak je znázorněno na obrázku níže:



Kód je následující:

Stažení zdrojového kódu:

Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosímOdpověď





Předchozí:warning: LF will be replaced by CRLF in xxxx.
Další:Optimalizace dotazů v rámci entity s POMOCÍ NOLOCK)
 Pronajímatel| Zveřejněno 23. 1. 2021 11:53:55 |
.NET/C# je založen na pozadí fronty úloh BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Zveřejněno 2023-4-24 22:36:31 |
Výborné, velmi dobré studijní materiály
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com