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

本文关键字:端点 NetMQ 套接字 | 更新日期: 2023-09-27 17:56:58

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

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

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

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