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

Cannot reuse an endpoint after NetMQ socket disposal

在我的应用程序中,我正在创建和处理 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 或其他一些延迟指令,但这既不稳健也不优雅。

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

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