在NetMQ套接字处理后无法重用端点

时间:2016-07-14 09:16:24

标签: c# .net sockets zeromq netmq

在我的应用程序中,我正在创建和部署NetMQ套接字。我注意到在处理绑定到该端点的前一个套接字后,我无法绑定到端点一段时间。一个最小的例子:

const string endpoint = "tcp://127.0.0.1:1234";

using (var publisher = new PublisherSocket())
    publisher.Bind(endpoint);

using (var publisher = new PublisherSocket())
    publisher.Bind(endpoint); //throws a NetMQException: "Unknown error (0xffffffff)"

Linger选项设置为0,但在第二次绑定之前我仍需要等待(在我的实验中最多几秒钟)。

我可以添加Thread.Sleep或其他一些延迟指令,但这既不健壮也不优雅。

这是一个错误吗?如果没有,确保我已经可以绑定到端点的正确方法是什么?

1 个答案:

答案 0 :(得分:2)

不是错误,套接字的处理是异步的,并且发生在后台线程中。您可以尝试在处置之前调用Unbind,它可能会更快。