gpt4 book ai didi

c# - ZeroMQ 套接字 Recv() 抛出 'Context was terminated' 异常 - 为什么以及如何恢复?

转载 作者:太空狗 更新时间:2023-10-29 22:54:07 24 4
gpt4 key购买 nike

通过 ZeroMQ 使用 ZMQ.SocketType.REP(回复)消息套接字,我正在接收消息,然后发回“OK”消息。

目前,我正在本地尝试此操作(从在同一台机器上运行的同一 C# 控制台应用程序发送/接收消息)。

相当有规律地(在大约 1500 条消息之后),该行:

var receivedBytes = _recvSocket.Recv();

... 将抛出异常:Context was terminated

我的问题是,为什么会发生这种情况,您如何从中恢复

我有一个 System.Threading.Thread 专用于运行我的“服务器端”ZeroMQ 回复套接字,这是它运行的循环:

    private static void MessagingLoopReceive(object state)
{
if (_zmqc == null)
{
_zmqc = new ZMQ.Context(1);
}

_recvSocket = _zmqc.Socket(ZMQ.SocketType.REP);
_recvSocket.Bind("tcp://*:5556");

while (true)
{
if (_queueStop)
{
break;
}

//Console.WriteLine("Server blocking for receive...");
var receivedBytes = _recvSocket.Recv();

if (receivedBytes != null && receivedBytes.Length > 0)
{
//Console.WriteLine("Server message received from client, sending OK");
_recvSocket.Send("OK", Encoding.ASCII);
//Console.WriteLine("Server OK sent, adding message to queue");
_queuedMessages.Enqueue(receivedBytes);
}
else
{
Thread.Sleep(1);
}
}
}

最佳答案

这意味着某人(垃圾收集器?)已经关闭了上下文。

关于c# - ZeroMQ 套接字 Recv() 抛出 'Context was terminated' 异常 - 为什么以及如何恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8022391/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com