示例#1
0
 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;
 }
示例#3
0
        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);
        }