// ------------------------------------------------------------------------------------ async void OnClk_Btn_Chg_RmLimit(object sender, EventArgs e) { try { string str_num = m_TBox_num_RmLimit.Text; int num_RmLimit = int.Parse(str_num); if (num_RmLimit < 2) { num_RmLimit = 2; } else if (num_RmLimit > 15) { num_RmLimit = 15; } Drrr_Host2.HttpTask chg_RmLimit_task = Drrr_Host2.Chg_RmLimit_Task_Factory.Create(num_RmLimit); await chg_RmLimit_task.DoWork(); if (chg_RmLimit_task.m_str_cancel != null) { MainForm.WriteStatus($"!!! 「Chg_RmLimit」がキャンセルされました。\r\n{chg_RmLimit_task.m_str_cancel}"); return; } MainForm.WriteStatus("+++ Chg_RmLimit 成功\r\n"); } catch (Exception ex) { MainForm.WriteStatus(ex.ToString() + "\r\n"); } }
async Task <bool> PostMsg(string msg_to_post) // 戻り値は、「m_TBox_PostMsg.Clear()」のためだけに利用される { if (mb_postMsg) { return(false); } m_Btn_postMsg.Enabled = false; mb_postMsg = true; try { Drrr_Host2.HttpTask postMsg_task = Drrr_Host2.PostMsg_Task_Factory.Create(msg_to_post); await postMsg_task.DoWork(); mb_postMsg = false; m_Btn_postMsg.Enabled = true; if (postMsg_task.m_str_cancel != null) { MainForm.WriteStatus($"!!! 「PostMsg」がキャンセルされました。\r\n{postMsg_task.m_str_cancel}"); return(false); } MainForm.WriteStatus("+++ PostMsg 成功\r\n"); return(true); } catch (Exception ex) { MainForm.WriteStatus(ex.ToString() + "\r\n"); mb_postMsg = false; m_Btn_postMsg.Enabled = true; return(false); } }
bool mb_getJSON = false; // await Drrr_Host2.GetJSON() で、awaiter が溜まるのを防ぐ async void GetJSON(DateTime datetime) { if (mb_getJSON) { return; } m_Btn_connect.Enabled = false; mb_getJSON = true; // -------------------------------------------------- // JOSN の取得 byte[] bytes_utf8; try { Drrr_Host2.HttpTask getJSON_task = Drrr_Host2.GetJSON_Task_Factory.Create(); await getJSON_task.DoWork(); mb_getJSON = false; m_Btn_connect.Enabled = true; if (getJSON_task.m_str_cancel != null) { MainForm.WriteStatus($"!!! 「JSON取得」がキャンセルされました。\r\n{getJSON_task.m_str_cancel}"); return; } bytes_utf8 = await getJSON_task.m_http_res.Content.ReadAsByteArrayAsync(); } catch (Exception ex) { MainForm.WriteStatus(ex.ToString() + "\r\n"); mb_getJSON = false; m_Btn_connect.Enabled = true; return; } // -------------------------------------------------- // JOSN の解析 try { StringBuilder sb = DB_cur.Anlz_RoomJSON(bytes_utf8); if (sb.Length > 0) { MainForm.WriteMsg(sb.ToString()); } Update_BanCtrls(); // 新規入室者へのメッセージ処理 if (UInfo_onRoom.msb_dtct_new_usr) { UInfo_onRoom.msb_dtct_new_usr = false; try { Drrr_Host2.HttpTask postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create( "来室者用自動メッセージ:この部屋の趣旨は、以下の URL を参考にしてください。宜しくお願いします。"); await postmsg_task.DoWork(); if (postmsg_task.m_str_cancel != null) { throw new Exception(postmsg_task.m_str_cancel); } await Task.Delay(750); postmsg_task = Drrr_Host2.PostMsg_Task_Factory.Create("https://github.com/kn201905/Ron_BAN"); await postmsg_task.DoWork(); if (postmsg_task.m_str_cancel != null) { throw new Exception(postmsg_task.m_str_cancel); } } catch (Exception ex) { MainForm.WriteStatus($"!!! 来室者用メッセージの出力時にエラーが発生しました。\r\n{ex.ToString()}\r\n\r\n"); } } } catch (Exception ex) { MainForm.WriteStatus($"!!! JSON解析中に例外が発生しました。JSON を保存します。\r\n{ex.ToString()}\r\n\r\n"); File.WriteAllText(@"Z:err_" + datetime.ToString("HH_mm_ss_f") + ".json" , Encoding.UTF8.GetString(bytes_utf8)); } }
public async void OnClk_Btn_BAN() { // MainForm.WriteStatus($"OnClk_Btn_BAN(): m_id_this_session -> {m_id_this_session}\r\n"); if (m_id_this_session == 0) { MainForm.WriteStatus("!!! エラー検出: m_id_this_session == 0 in BanCtrl.OnClk_Btn_BAN()\r\n"); return; } // { throw new Exception("!!! エラー検出: m_id_this_session == 0 in BanCtrl.OnClk_Btn_BAN()"); } // まず DB_static に encip を登録しておく DB_static.Regist(m_encip); mb_Rgst_ban = true; mb_Exec_Ban = true; m_GUI.m_Btn_AI_talk.Enabled = false; m_GUI.m_Btn_ban.Enabled = false; if (m_id_this_session > 0) { // 入室者の BAN 処理 m_GUI.m_TBox_info.BackColor = Color.HotPink; Drrr_Host2.HttpTask ban_usr_task = Drrr_Host2.BanUsr_Task_Factory.Create(m_uinfo.m_uid.m_str_uid); if (ban_usr_task.m_str_cancel == null) { try { await ban_usr_task.DoWork(); } catch (Exception ex) { ban_usr_task.m_str_cancel = ex.ToString() + "\r\n"; } } // まとめてエラー処理を行う if (ban_usr_task.m_str_cancel != null) { MainForm.WriteStatus($"!!! 「BanUsr」がキャンセルされました。\r\n{ban_usr_task.m_str_cancel}"); m_GUI.m_Btn_AI_talk.Enabled = true; m_GUI.m_Btn_ban.Enabled = true; return; } // 受信メッセージを表示する byte[] bytes_utf8 = await ban_usr_task.m_http_res.Content.ReadAsByteArrayAsync(); m_sb_ban_ret_msg.Clear(); m_sb_ban_ret_msg.Append(System.Text.Encoding.UTF8.GetString(bytes_utf8)); m_sb_ban_ret_msg.Append($"-> [{m_uinfo.m_uname}]\r\n"); // 強制退室 or 部屋にいませんでした の2択になるため、その判定が必要 string ret_str = m_sb_ban_ret_msg.ToString(); if (ret_str.Contains("強制退室") == false) { // 強制退室失敗 m_GUI.m_Btn_AI_talk.Enabled = true; m_GUI.m_Btn_ban.Enabled = true; } MainForm.WriteStatus(ret_str); } else { // 退室者の BAN 処理 m_GUI.m_TBox_info.BackColor = Color.LightPink; // 退室者の eip to ban 登録 ExitEip_onTalks.Regist_to_BAN(m_encip); } }