示例#1
0
        /// <summary>
        /// 指定された部屋にJoinして指定されたActionを行ってからLeaveする
        /// </summary>
        /// <param name="client">ICavetubeClientのインスタンス</param>
        /// <param name="roomId">Joinする部屋のID</param>
        /// <param name="action">実施するアクション</param>
        public static void Joinning(ICavetubeClient client, String roomId, Action action)
        {
            // Joinは待たないと部屋名が設定されうちにPostしようとして失敗するので待つ
            using (ManualResetEvent sig = new ManualResetEvent(false))
            {
                client.OnJoin += s =>
                {
                    sig.Set();
                };
                client.JoinRoom(roomId);
                sig.WaitOne();
            }

            action();

            // Leaveも待たないとぶち切れそうなので待つ
            using (ManualResetEvent sig = new ManualResetEvent(false))
            {
                client.OnLeave += s =>
                {
                    sig.Set();
                };
                client.LeaveRoom();
                sig.WaitOne();
            }
        }
示例#2
0
        /// <summary>
        /// 指定された部屋にJoinして指定されたActionを行ってからLeaveする
        /// </summary>
        /// <param name="client">ICavetubeClientのインスタンス</param>
        /// <param name="roomId">Joinする部屋のID</param>
        /// <param name="action">実施するアクション</param>
        public static void Joinning(ICavetubeClient client, String roomId, Action action)
        {
            // Joinは待たないと部屋名が設定されうちにPostしようとして失敗するので待つ
            using (ManualResetEvent sig = new ManualResetEvent(false))
            {
                client.OnJoin += s =>
                {
                    sig.Set();
                };
                client.JoinRoom(roomId);
                sig.WaitOne();
            }

            action();

            // Leaveも待たないとぶち切れそうなので待つ
            using (ManualResetEvent sig = new ManualResetEvent(false))
            {
                client.OnLeave += s =>
                {
                    sig.Set();
                };
                client.LeaveRoom();
                sig.WaitOne();
            }
        }