Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 41603|Ответ: 2

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

[Скопировать ссылку]
Опубликовано 2021-1-5 14:58:50 | | | |
Раньше я писал простой курс помощи по логированию, скопированный с другого фреймворка, и этот тест непрост в использовании, а вот так:

C# — самый простой способ записывать логи
https://www.itsvse.com/thread-5111-1-1.html
В этой статье реализуется простой класс логирования на базе BlockingCollection.

.NET/C# Collection Thread Safety Collection (колляция)
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 while и возвращает тип 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.
Следующий:Оптимизация запросов к фреймворку сносов 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