Преди писах прост помощен курс за логване, копиран от друг фреймуърк, и тестът не е лесен за използване, както следва:
Тази статия реализира прост клас за логване, базиран на BlockingCollection.
<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, за да предадат сигнала, както следва:
Тестът записва 10 000 лога, което отнема по-малко от 10 милисекунди, както е показано на фигурата по-долу:
Кодът е следният:
Изтегляне на изходния код:
Туристи, ако искате да видите скритото съдържание на този пост, моля Отговор
|