问题描述
请教各位高手,我想在主线程中调用一个线程BB中使用到一个方法C;C是SOCKET通信方面的一个方法,一旦调用C,C就会一直阻塞程序,等待消息来到。我想在一段时间后如果没有消息来到,我就结束掉B,可是用ABORT()方法并不能终止掉阻塞的线程啊所以想问问该用什么方法?privatevoidbutton1_Click(objectsender,EventArgse){labelControl1.Text="数据上传中,请稍后!";workerThread=newThread(newupdata);workerThread.Start();timer1.Start();}}publicvoidnewupdata(){byte[]aa=newbyte[1024];datalen=RecvData(aa);这句话就是SOCKET的阻塞方法}然后我想在timetiker时间中判断datalen的长度如果不符合则结束线程不知道结束语句怎么写了:(
解决方案
解决方案二:
哎难道也没有人知道么?就是停止一个阻塞了的线程我也是试了很多办法才来求助的啊
解决方案三:
说说你是怎么调用ABORT()的。ABORT()抛出的异常只能在本线程内捕获。
解决方案四:
线程好难,学习中
解决方案五:
使用socket的异步方法
解决方案六:
我是这样用的try{if(workthread.threadstate==isrunning)workthread.abort();workthread.join();}catch(THreadExceptionee){messsagebox.show();}catch(Exception){}
解决方案七:
哎知道异步调用是可以的就是为了不去改SOCKET如果没有办法的话只有写成异步的了
解决方案八:
自己调用Abort,会引发一个错误的。要处理下。否则老是EXCEPT。