主线程:threadA
监听线程:threadB
接收数据的线程:threadC
不同的线程去执行不同的方法,但是几个线程同时在运行,只需要把线程设置为主线程,但其中一个线程终止的时候,其它的线程也会终止;
循环监听的Accept()方法会堵塞线程,所以我们要创建一个新的线程去执行循环监听客户端的请求;
当监听请求的时候,我们要去循环接收客户端发送的数据,在接收数据的方法Receive()也会堵塞线程,所以现在又要创建一个线程去执行接收客户端的发送的数据;
现在出现三个线程,在监听客户端的请求的时候我们如果不去创建一个线程去监听,那么窗体的主线程会被堵塞,导致窗体不能活动(threadA线程会被堵塞);
当一个客户端连接上了的时候,使用了Receive()方法接收,如果不使用独一的线程去执行此方法,那么他会堵塞监听的线程(threadB线程会被赌赛),一但监听线程被堵塞了就没有没有方法去监听客户端的请求了,当第二客户端请求来了的时候,会出现连接不上的,所以还是要创建接收数据的线程(threadC);
在这里简单的阐述了三个线程的关系 |