110,534
社区成员
发帖
与我相关
我的任务
分享
我现在有一个程序,有UDP/TCP/USB/串口4中通信方式,并且它们4个都一个ReceiveData()函数,用来接收发来的数据,所以我设置了4个后台线程,即
一、 Thread TCPthreadReceive = new Thread(new ThreadStart(TCPReceiveData));
TCPthreadReceive.IsBackground = true;
TCPthreadReceive.Start();
private void TCPReceiveData();
二、
Thread UDPthreadReceive = new Thread(new ThreadStart(UDPReceiveData));
UDPthreadReceive.IsBackground = true;
UDPthreadReceive.Start();
private void UDPReceiveData();
三、
Thread USBthreadReceive = new Thread(new ThreadStart(USBReceiveData));
USBthreadReceive.IsBackground = true;
USBthreadReceive.Start();
private void USBReceiveData();
四、
Thread COMthreadReceive = new Thread(new ThreadStart(COMReceiveData));
COMthreadReceive.IsBackground = true;
COMthreadReceive.Start();
private void COMReceiveData();
1、请问这样写有没有什么坏处,目前我是这样写的,并且也能实现同时接收的。只是想搞明白这样开4个后台线程,或者说开更多这样的线程有没有什么影响?
2、这些都是当点击“连接设备”后才建立这个后台线程,只要点击 按钮就会新实例化一个后台线程,是不是要在 点击 “断开连接” 按钮时,把刚刚的后台线程关掉?
采用 UDPThread.Abort();这样的方法关闭,不关有没有影响,是不是只要窗体不关闭,点击连接按钮,就会一直创建这个后台线程?