Как создать очередь во время выполнения? - PullRequest
1 голос
/ 08 ноября 2011

Я пишу приложение на C #. В этом приложении я получаю данные из разных портов. Здесь я хочу создать очередь с именем, равным номеру порта, всякий раз, когда новый порт начинает отправлять данные. Можно ли создать такую ​​очередь?

Ответы [ 3 ]

5 голосов
/ 08 ноября 2011

Я предлагаю создать Dictionary<int, Queue> и использовать номер порта в качестве индекса.

1 голос
/ 08 ноября 2011

Если вы хотите создать очередь полученных данных для каждого используемого порта, вам лучше всего иметь набор очередей с ключами.Эти очереди будут обозначены номером порта.Так что, возможно, используйте Dictionary<int, Queue<Data>>.Затем, когда приходит запрос, вы можете проверить, есть ли у порта очередь;если так, добавьте к этой очереди;если нет, создайте очередь.то есть

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);
}
0 голосов
/ 08 ноября 2011

Вы можете создать Queue<KeyValuePair<int, object>>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...