private void ReadProcedure() { while (!_stopReading) { WaitPair evt = null; lock (_evts) { if (_evts.Any()) { evt = _evts.Dequeue(); } } if (evt != null) { evt.Result = _reader.ReadAny(); evt.ResultIsReady.Set(); } lock (_evts) { if (!_evts.Any() && !_stopReading) { Monitor.Wait(_evts); } } } }
public IEnumerable<byte[]> ExecuteCommand(IRedisCommandBuilder builder) { var waitPair = new WaitPair(); lock(_writeLock) { builder.FlushCommandTo(_conn.Writer); lock (_evts) { _evts.Enqueue(waitPair); Monitor.Pulse(_evts); } } waitPair.ResultIsReady.WaitOne(); return waitPair.Result; }
public IEnumerable <byte[]> ExecuteCommand(IRedisCommandBuilder builder) { var waitPair = new WaitPair(); lock (_writeLock) { builder.FlushCommandTo(_conn.Writer); lock (_evts) { _evts.Enqueue(waitPair); Monitor.Pulse(_evts); } } waitPair.ResultIsReady.WaitOne(); return(waitPair.Result); }