.net 中止阻塞线程
我有一个线程正在阻止Networkstream.net 中止阻塞线程,.net,multithreading,.net,Multithreading,我有一个线程正在阻止NetworkstreamRead调用。如何最好地中止此线程?我尝试从另一个线程调用Thread.Abort,根据MSDN,这会引发ThreadAbortException。但是,线程中根本不会引发ThreadAbortException。然而,当我移除阻塞Read调用并让线程处于循环中时,情况就是这样。最好的方法是什么?我是否可以同时等待Read调用和一个事件,以便在其中一个发生时线程解锁?然后我可以从另一个线程发出该事件的信号。关闭套接字!然后,读取操作将引发异常。线程。
Read
调用。如何最好地中止此线程?我尝试从另一个线程调用Thread.Abort
,根据MSDN,这会引发ThreadAbortException
。但是,线程中根本不会引发ThreadAbortException
。然而,当我移除阻塞Read
调用并让线程处于循环中时,情况就是这样。最好的方法是什么?我是否可以同时等待Read
调用和一个事件,以便在其中一个发生时线程解锁?然后我可以从另一个线程发出该事件的信号。关闭套接字!然后,读取操作将引发异常。线程。中止
仅在线程运行托管代码时中止,但您的线程正在等待非托管套接字,因此在套接字解锁之前不会发生任何事情
关闭插座是这里的最佳选择。Set
stream.ReadTimeout = timeout;
// timeout in ms
使用前
stream.Read(....
这将强制读取超时,并允许在指定的超时(毫秒)内未读取任何内容时执行某些操作。请参阅MSDN上的或。
通过这种方式,您可以实现只在指定的超时时间内阻塞的读取。使用其他同步方法确定读取是应继续还是应完成线程。超时将引发异常。您好,是否尝试修改缓冲区大小以避免阻塞。在线程上使用循环和缓冲区大小允许您在需要时停止线程;-)一开始不堵车怎么样?