2015-04-17 45 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版本中修復行爲,就好像有人忘記禁用此選項一樣,系統將在測試(調試)控制下工作,但在實時(發佈)中失敗。