Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 41603|Respuesta: 2

[Fuente] .NET/C# implementa un registro sencillo basado en BlockingCollection

[Copiar enlace]
Publicado el 5-1-2021 14:58:50 | | | |
Antes escribí una clase sencilla de ayuda para registros, copiada de otro framework, y la prueba no es fácil de usar, como sigue:

C# es la forma más fácil de escribir registros
https://www.itsvse.com/thread-5111-1-1.html
Este artículo reimplementa una clase sencilla de registro basada en BlockingCollection.

Colección de Seguridad de Hilos .NET/C# (colación)
https://www.itsvse.com/thread-3769-1-1.html
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:

c# encapsula una cola universal QueueHelper
https://www.itsvse.com/thread-5029-1-1.html


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 favorRespuesta





Anterior:warning: LF will be replaced by CRLF in xxxx.
Próximo:Optimización de consultas del Entity Framework WITH(NOLOCK)
 Propietario| Publicado el 23-01-2021 11:53:55 |
.NET/C# se basa en la cola de tareas en segundo plano BlockingCollection
https://www.itsvse.com/thread-9528-1-1.html

Publicado el 24-4-2023 22:36:31 |
Excelente y muy buen material de estudio
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com