0

我正在通过 UDP 端口发送几条命令消息。当程序继续服务时,我如何将它们排在后台安全线程中。

我要发送的命令是这样的:

 GlobalUDP.UDPClient.Send(IPCmd, IPCmd.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303));

 GlobalUDP.UDPClient.Send(IPCmd2, IPCmd.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303));

GlobalUDP.UDPClient.Send(IPCmd3, IPCmd.Length, new System.Net.IPEndPoint(System.Net.IPAddress.Parse("255.255.255.255"), 30303));

任何帮助表示赞赏...

4

1 回答 1

1

我建议你使用一个BlockingCollection<T>

程序的主线程可以BlockingCollection.Add()用来将项目添加到队列中。

然后你的后台线程将GetConsumingEnumerable()用来输出数据,就像这样(queueBlockingCollection 在哪里):

foreach (var item in queue.GetConsumingEnumerable())
{
    // Process item using GlobalUDP.UDPClient.Send()
}

当您的主线程完成对项目的排队并且您希望后台线程退出时,您调用BlockingCollection.CompleteAdding()它,它将终止foreach后台线程正在完成的工作。

您将为所需的数据编写一个包装类,GlobalUDP.UDPClient.Send()并将其用作 BlockingCollection 的元素类型。

于 2013-05-14T10:00:28.453 回答