¿Cómo crear una cola en tiempo de ejecución?

Estoy escribiendo una aplicación en C #. En esta aplicación, obtengo datos de diferentes puertos. Aquí quiero crear una cola con el nombre igual al número de puerto cada vez que un nuevo puerto comienza a enviar datos. ¿Puedo crear una cola de este tipo?

preguntado el 08 de noviembre de 11 a las 11:11

¿Y cómo encontrarías (usarías) esos puertos del resto de tu código? -

En esa cola, quiero agregar los datos que se obtienen de ese puerto para su posterior procesamiento. -

3 Respuestas

Sugiero crear un Dictionary<int, Queue> y usando el número de puerto como índice.

respondido 08 nov., 11:15

Quiero agregar datos en la cola desde un lado y usarlos desde el otro lado. ¿Es posible si uso el diccionario? - Dany

Utiliza el diccionario solo para acceder a la cola. Luego, puede agregar datos de un lado de la cola y cargarlos desde el otro lado. - rgargente

Si quiere decir que desea crear una cola de datos recibidos para cada puerto que se está utilizando, sería mejor tener una colección de colas con claves. Estas colas estarían codificadas por el número de puerto. Entonces tal vez use un Dictionary<int, Queue<Data>>. Luego, cuando llega una solicitud, puede verificar si el puerto ya tiene una cola; si es así, agregue a esa cola; si no, cree la cola. es decir

private Dictionary<int, Queue<Data>> mPortQueues = new Dictionary<int, Queue<Data>>();

public void ReceiveData(int portNumber, Data data)
{
    Queue<Data> queue;

    // See if we have a queue
    if (!mPortQueues.TryGetValue(portNumber, out queue))
    {
        // No queue for this port, so create and cache
        queue = new Queue<Data>();

        mPortQueues.Add(portNumber, queue);
    }

    // Queue the data
    queue.Enqueue(data);
}

respondido 08 nov., 11:15

Aquí puedo crear la cola y agregarla al diccionario junto con el número de puerto. Pero si quiero agregar los datos en la cola del número de puerto respectivo en otro proceso, ¿cómo debo hacerlo? Significa que escribí otro método en el que estoy escribiendo los datos en la cola respectiva. - Dany

No estoy completamente seguro de cuál es su intención, pero si desea compartir los datos recibidos entre dos lugares (dos programas, por ejemplo), es mejor que configure un servicio compartido que maneje este sistema de cola; donde ambos programas pueden solicitar la información de la cola. - Samuel Slade

Usted puede crear un Queue<KeyValuePair<int, object>>

respondido 08 nov., 11:15

No creo que esto sea exactamente lo que quieren, ya que su acceso es por puerto #, no por orden - Paul Tyng

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.