public void Subscribe(params string[] channels)
    {
      _provider.SendCommand(RedisCommand.SUBSCRIBE, channels);

      if (_readingThread == null || _readingThread.ThreadState != ThreadState.Running)
      {
        _wasbalancingcalls = _provider.Configuration.LogUnbalancedCommands;

        _readingThread = new Thread(new ParameterizedThreadStart(ChannelsReadingThread));
        _readingThread.IsBackground = true;
        _provider.ShareConnectionWithThread(_readingThread.ManagedThreadId);

        _readingThread.Start(new ProviderState() { Provider = _provider, Stream = _provider.GetBStream() });

        _provider.RemoveConnectionFromThread(Thread.CurrentThread.ManagedThreadId);
      }
    }
        public void Subscribe(params string[] channels)
        {
            _provider.SendCommand(RedisCommand.SUBSCRIBE, channels);

            if (_readingThread == null || _readingThread.Status != TaskStatus.Running)
            {
                _wasbalancingcalls = _provider.Configuration.LogUnbalancedCommands;

                _readingThread = Task.Factory.StartNew(() => ChannelsReadingThread(new ProviderState()
                {
                    Provider = _provider, Stream = _provider.GetBStream()
                }));

                _provider.ShareConnectionWithThread(_readingThread.Id);

                _readingThread.Start();

                _provider.RemoveConnectionFromThread(Task.CurrentId ?? 0);
            }
        }