我有一个非常简单的线程循环
public void ClientLoop(object AContext)
{
var context = (ZMQ.Context) AContext;
Socket client = CreateServerSocket(context);
while (true)
{
try
{
Context.Poller(requestTimeout*1000, client);
}
catch (Exception e)
{
if (e.Errno == ETERM)
{
//Catch a termination error.
Debug.WriteLine("Terminated! 1");
return;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且处理看起来如下
public void Dispose()
{
_context.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
创建客户端套接字时将linger设置为零,并在处理程序集中设置轮询器.套接字也是请求套接字.
一旦调用dispose,轮询器就会排除并进入try除块之外.然而,在处置后没有继续像我想的那样.这就是ZGuide如何处理上下文和套接字的破坏,但在这种情况下它似乎不起作用.
我错过了什么?