我有一个线程在等待 TcpListener.AcceptTcpClient()
,这个方法会阻塞,我想有时候暂停这个线程。
我读过关于 Monitor.Wait(...)
的文章,但我只有使用互斥锁的经验,如果线程在一个阻塞方法上等待,那就有点意思了。
现在 Thread.Suspend(...)
已经被弃用了,那么我应该如何暂停这个线程呢?
我有一个线程在等待 TcpListener.AcceptTcpClient()
,这个方法会阻塞,我想有时候暂停这个线程。
我读过关于 Monitor.Wait(...)
的文章,但我只有使用互斥锁的经验,如果线程在一个阻塞方法上等待,那就有点意思了。
现在 Thread.Suspend(...)
已经被弃用了,那么我应该如何暂停这个线程呢?
这是不可能的,这是一个无法解决的竞态条件。监听器在您想要挂起它之前可能已经接受了连接。关闭监听器以使其不再接受任何连接是唯一确定的方法。
请重新考虑您的逻辑。您想要停止连接的操作可能需要锁定。
BeginAcceptTcpClient
и§Је†ігЂ‚ - Petrus Theron
AcceptTcpClient
返回后设置一个suspended
标志并在其上等待是否是正确的做法? - Petrus Theron