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