2015-04-17 44 views
0

时中断我们正在使用ZeroMQ unter VB.NET进行测试,并且在使用PUB/SUB套接字时会产生奇怪的效果。当我们在调试模式下编译时,一切正常。在发布版中,SUB-Programm获取一个socket.Receivestatus =中断。代码片段:ZeroMQ Receive-Status在编译版本

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) 
.... 

目前为止我们可以看到它,它与每条消息的长度有关;如果它很小(< 100字节),所有内容在调试&发布模式下均可正常工作。如果我们假设每条消息有2000字节,则只收到137条消息,然后发生错误。

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

任何想法?

回答

0

我想我找到了它:你必须关闭项目设置...编译...高级选项下的“优化”-Checkbox。改变之后,一切正常。

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