Exemplo n.º 1
0
        public async Task Connect()
        {
            try
            {
                using (await _connectionLock.LockAsync().ConfigureAwait(false))
                {
                    await Disconnect().ConfigureAwait(false);

                    _taskManager.ClearException();
                    _disconnectedEvent.Reset();

                    var cancelSource = new CancellationTokenSource();
                    CancelToken = cancelSource.Token;
                    var tasks = new Task[] { CancelToken.Wait(), TwitchClientMessageQueue.RunSendQueue(CancelToken), TwitchWhisperMessageQueue.RunSendQueue(CancelToken) };
                    await _taskManager.Start(tasks, cancelSource).ConfigureAwait(false);
                    await ConnectClient().ConfigureAwait(false);
                }
            }
            catch (Exception ex)
            {
                await _taskManager.SignalError(ex).ConfigureAwait(false);

                throw;
            }
        }
Exemplo n.º 2
0
        public Task Disconnect()
        {
            if (TwitchClient.IsConnected)
            {
                TwitchClient.Disconnect();
            }
            TwitchClientMessageQueue.Clear();
            TwitchWhisperMessageQueue.Clear();

            _connectedEvent.Reset();
            _disconnectedEvent.Set();
            return(_taskManager.Stop(true));
        }
Exemplo n.º 3
0
 public async Task SendMessage(string message, string sender = Bot.BotNickname)
 {
     await Task.Run(() => {
         TwitchClientMessageQueue.QueueSend(message, sender);
     });
 }