Не удается повторно использовать конечную точку после удаления сокета 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 ответ

Решение

Не ошибка, утилита сокета асинхронна и происходит в фоновом потоке. Вы можете попытаться позвонить Unbind до утилизации, это может быть быстрее.

Другие вопросы по тегам