Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 41603|Отговор: 2

[Източник] .NET/C# реализира прост лог, базиран на BlockingCollection

[Копирай линк]
Публикувано на 2021-1-5 14:58:50 | | | |
Преди писах прост помощен курс за логване, копиран от друг фреймуърк, и тестът не е лесен за използване, както следва:

C# е най-лесният начин за писане на логове
https://www.itsvse.com/thread-5111-1-1.html
Тази статия реализира прост клас за логване, базиран на BlockingCollection.

.NET/C# колекция за безопасност на нишките (колация)
https://www.itsvse.com/thread-3769-1-1.html
<T> BlockingCollection е клас за колекция, безопасен за нишки, който предоставя следната функционалност:

Внедрете модела създател-потребител.
Добавяне и извличане на предмети едновременно чрез мултитрединг.
Опционален максимален капацитет.
Когато колекцията е празна или пълна, тя се блокира чрез операции за вмъкване и премахване.
Опитите за вмъкване и премахване не блокират и не се случват за определен период от време.
Инкапсулацията реализира всякакъв тип колекция на IProducerConsumerCollection<T>
Използвайте таго cancel, за да извършите действието за анулиране.
Поддържат се два вида enums, които използват foreach (във Visual Basic, For Each): enums, само за четене. Изброяване, което премахва елемент, когато той е изброен.


Microsoft представя:Входът към хиперлинк е видим.

BlockingCollection е опашка за блокиране, безопасна за нишки, използваща тази функция за реализиране на режим производител-потребител в процеса, като препращане на съобщения, логване и др.

Извикай метода Add за добавяне на информация в опашката, и когато опашката няма съобщения, IsComplete винаги ще блокира while цикъла, така че няма да предизвика мъртъв цикъл. Когато излезе ново съобщение, IsCompleted in in ще се задейства и ще върне типа bool, което кара изпълнението да продължи, тоест извличане на данни от нишката.


Преди това блокирахме нишката, като извикахме метода WaitOne на ManualResetEvent, като извиквахме методите Reset и Set, за да предадат сигнала, както следва:

c# капсулира универсална опашка QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


Тестът записва 10 000 лога, което отнема по-малко от 10 милисекунди, както е показано на фигурата по-долу:



Кодът е следният:

Изтегляне на изходния код:

Туристи, ако искате да видите скритото съдържание на този пост, моляОтговор





Предишен:warning: LF will be replaced by CRLF in xxxx.
Следващ:Оптимизация на заявки за Entity Framework WITH(NOLOCK)
 Хазяин| Публикувано на 23.01.2021 11:53:55 |
.NET/C# е базиран на фоновата опашка на задачи BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Публикувано на 24.04.2023 22:36:31 |
Отличен, много добър учебен материал
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com