【问题标题】:ZeroMQ Receive-Status Interrupted when compiled in ReleaseZeroMQ 接收状态在 Release 中编译时中断
【发布时间】:2015-04-18 16:05:09
【问题描述】:

我们在 VB.NET 下使用 ZeroMQ 进行测试,在使用 PUB/SUB 套接字时会产生奇怪的效果。当我们在调试模式下编译时,一切正常。在 Release 中,SUB-Programm 得到一个 socket.Receivestatus=Interrupted。代码片段:

    Dim context = ZmqContext.Create
    Dim socket = context.CreateSocket(SocketType.SUB)
    socket.SubscribeAll()
    socket.Connect("tcp://127.0.0.1:5550")
    socket.ReceiveTimeout = TimeSpan.FromMilliseconds(1000)
    socket.ReceiveHighWatermark = 1000
    Console.WriteLine("Listening...")
    While True
        Dim msg As String
        msg = socket.Receive(Encoding.Unicode)
        Select Case socket.ReceiveStatus
            Case ReceiveStatus.Interrupted
                Console.WriteLine("Status={0}", socket.ReceiveStatus)
....

目前我们可以看到,它与每条消息的长度有关;如果它很小(

我们通过 NuGet 安装了 ZeroMQ(包 id="clrzmq" version="3.0.0-rc1")。我们检查了 32 位和 64 位 - 相同的行为。

有什么想法吗?

【问题讨论】:

    标签: .net release zeromq


    【解决方案1】:

    我想我发现了:您必须关闭项目-设置...编译...高级选项下的“优化”-复选框。更改后,一切正常。

    我的建议:在 ZeroMQ 的未来版本中修复行为,好像有人忘记禁用此选项,系统将在测试(调试)条件下工作,但在实时(发布)条件下失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-27
      • 2018-04-10
      • 1970-01-01
      • 2019-11-25
      • 2015-01-10
      • 1970-01-01
      相关资源
      最近更新 更多