c# - how to queue or buffer a series of commands in thread safe manner? -
i sending several command messages through udp port. how can queue them in background safe thread while program continues service..
the commands want send this:
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)); any appreciated...
i suggest use blockingcollection<t>
the program's main thread can use blockingcollection.add() add items queue.
then background thread use getconsumingenumerable() output data, (where queue blockingcollection):
foreach (var item in queue.getconsumingenumerable()) { // process item using globaludp.udpclient.send() } when main thread has finished enqueuing items , want background thread exit, call blockingcollection.completeadding() , terminate foreach being done background thread.
you write wrapper class data needed globaludp.udpclient.send() , use element type of blockingcollection.
Comments
Post a Comment