diff --git a/src/ZeroMQ/Poller.cs b/src/ZeroMQ/Poller.cs index dda3001..6418e1a 100644 --- a/src/ZeroMQ/Poller.cs +++ b/src/ZeroMQ/Poller.cs @@ -147,7 +147,7 @@ public int Poll(TimeSpan timeout) { return (int)timeout.TotalMilliseconds == Timeout.Infinite ? PollBlocking() - : PollNonBlocking(timeout); + : (int)timeout.TotalMilliseconds == 0 ? PollNonBlocking() : PollNonBlocking(timeout); } /// @@ -212,6 +212,21 @@ private int PollNonBlocking(TimeSpan timeout) return readyCount; } + private int PollNonBlocking() + { + CreatePollItems(); + + var readyCount = Poll(0); + if (readyCount >= 0 || ErrorProxy.ContextWasTerminated) + { + return readyCount; + } + + ContinueIfInterrupted(); + + return readyCount; + } + private void CreatePollItems() { if (_pollItems == null || _pollItems.Length != _pollableSockets.Count)