Раньше я писал простой курс помощи по логированию, скопированный с другого фреймворка, и этот тест непрост в использовании, а вот так:
В этой статье реализуется простой класс логирования на базе BlockingCollection.
<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 для передачи сигнала, следующим образом:
Тест записывает 10 000 журналов, что занимает менее 10 миллисекунд, как показано на рисунке ниже:
Код таков:
Скачать исходный код:
Туристы, если вы хотите увидеть скрытое содержание этого поста, пожалуйста Ответ
|