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); } }