c# .net multithreading message

c# - Mejor manera de enviar mensaje a hilo



.net multithreading (1)

Yo usaría una cola de productor / consumidor, personalmente. Eso es efectivamente lo que es el bucle de mensajes de WinForms, solo de una manera específica de Windows Forms.

Tenga en cuenta que si puede utilizar .NET 4.0, hay collections integradas en el marco que lo hacen muy fácil. En particular, el uso de un BlockingCollection<T> envuelto alrededor de un ConcurrentQueue<T> hará lo que desee.

Personalmente no usaría el código GeeksCafe; encapsularía la naturaleza de productor / consumidor en su propia clase que envuelve una cola, en lugar de tratar cualquier cola de esa manera a través de métodos de extensión. En particular, necesita que todas las partes manejen la cola correctamente, lo que significa que es mejor darle su propia API desde mi punto de vista.

¿Cuál es la manera más rápida y eficiente de enviar un mensaje a un hilo (no proceso) que se ejecuta en bucle while (1) en c # /. Net:

  1. Uso de una cola sincronizada (como en Bloqueo de colas y comunicación de subprocesos en C # )

  2. Ejecutar un bucle de mensajes usando Application.Run de sistemas winforms en el contexto de thread y antes de ejecutar application.run suscríbase a un evento que capture el mensaje en el contexto de thread.

  3. Usando socket o canalización con nombre para enviar un mensaje al hilo.

En Linux, estoy acostumbrado a hacer esto con los sockets de dominio Unix, ¿cuál es la forma equivalente de hacerlo en Windows? compartir archivo de memoria? nombre de tubería? ¿Qué piensas?