Antes escribí una clase sencilla de ayuda para registros, copiada de otro framework, y la prueba no es fácil de usar, como sigue:
Este artículo reimplementa una clase sencilla de registro basada en BlockingCollection.
BlockingCollection<T> es una clase de colección segura para hilos que ofrece la siguiente funcionalidad:
Implementa el modelo maker-user. Añadir y recuperar objetos simultáneamente mediante multihilo. Capacidad máxima opcional. Cuando la colección está vacía o llena, se bloquea mediante operaciones de inserción y eliminación. Los intentos de inserción y eliminación no bloquean ni ocurren durante un periodo de tiempo especificado. La encapsulación implementa cualquier tipo de colección de IProducerConsumerCollection<T> Utiliza la etiqueta cancelar para realizar la acción de cancelación. Se admiten dos tipos de enums que usan foreach (en Visual Basic, For Each): enums de solo lectura. Una enumeración que elimina un elemento cuando uno está enumerado.
Microsoft presenta:El inicio de sesión del hipervínculo es visible.
BlockingCollection es una cola de bloqueo segura para hilos, que utiliza esta función para implementar el modo productor-consumidor dentro del proceso, como el reenvío de mensajes, registros, etc.
Llama a su método Add para añadir información a la cola, y cuando la cola no tiene mensajes, IsCompleted siempre bloqueará el bucle while, por lo que no causará un bucle muerto. Cuando sale un nuevo mensaje, se activa el IsCompleted in while y devuelve el tipo bool, haciendo que la ejecución continúe, es decir, la obtención de datos del hilo.
Anteriormente, bloqueamos el hilo llamando al método WaitOne de ManualResetEvent, llamando a los métodos Reset y Set para transmitir la señal, de la siguiente manera:
La prueba escribe 10.000 logs, lo que lleva menos de 10 milisegundos, como se muestra en la figura siguiente:
El código es el siguiente:
Descarga del código fuente:
Turistas, si queréis ver el contenido oculto de esta publicación, por favor Respuesta
|