Ejemplo n.º 1
0
        internal Task CompleteJoinAsync(CancellationToken ct)
        {
            var cts = new CancellationTokenSource();
            var tcs = new TaskCompletionSource <bool>();

            ct.Register(() =>
            {
                cts.Cancel();
                tcs.TrySetCanceled();
            });

            JoinCompleteEvent.Of(this._botBitsClient).WaitOneAsync(cts.Token).ContinueWith(task =>
            {
                if (task.IsCanceled)
                {
                    return;
                }
                cts.Cancel();

                tcs.TrySetResult(true);
            }, CancellationToken.None);
            JoinFailureEvent.Of(this._botBitsClient).WaitOneAsync(cts.Token).ContinueWith(task =>
            {
                if (task.IsCanceled)
                {
                    return;
                }
                cts.Cancel();

                tcs.TrySetException(new JoinException(task.Result.Title, task.Result.Reason));
            }, CancellationToken.None);

            return(tcs.Task);
        }
Ejemplo n.º 2
0
        static void Main()
        {
            var bot = new BotBitsClient();

            ChatFormatsExtension.LoadInto(bot, new CakeChatSyntaxProvider("Bot"));
            CommandsExtension.LoadInto(bot, '!');
            Login.Of(bot).AsGuest().JoinRoom("PW01");
            InitEvent.Of(bot).WaitOneAsync().Wait();
            JoinCompleteEvent.Of(bot).WaitOneAsync().Wait();
            Thread.Sleep(Timeout.Infinite);
        }