/// <summary> /// DisConnect /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void ButtonF2_Click(object sender, EventArgs e) { base.ButtonF2_Click(sender, e); // ▼▼▼ 業務処理 ▼▼▼ ReadCancelTokenSource.Cancel(); TcpClientUtil.Dispose(); TcpClientUtil = null; SetControlEnabled(ActionMode.Init); // ▲▲▲ 業務処理 ▲▲▲ }
private async void CloseTcpClient() { // TCP破棄 TcpClientUtil?.Dispose(); TcpClientUtil = null; // キャンセル ReadCancelTokenSource.Cancel(); // 受信スレッド終了待ち await readLoopTask; readLoopTask?.Dispose(); readLoopTask = null; }
/// <summary> /// Connect /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void ButtonF1_Click(object sender, EventArgs e) { Logger.WriteLine(MethodBase.GetCurrentMethod().Name); base.ButtonF1_Click(sender, e); // ▼▼▼ 業務処理 ▼▼▼ if (TcpClientUtil != null) { // 既に接続している場合、再接続前に破棄する TcpClientUtil.Dispose(); } // 接続 string ip = tboxIP.Text; int.TryParse(tboxPort.Text, out int port); try { TcpClientUtil = new TcpClientManager(ip, port); listViewLog.Items.Add($"接続しました。{TcpClientUtil.GetClientIpAndPort()}->{TcpClientUtil.GetServerIpAndPort()}"); // 名前を送信 string name = tboxName.Text; TcpMessageUtility mgr = new TcpMessageUtility(TcpMessageUtility.HeaderConnect, name, TcpMessageUtility.TargetAll, name); TcpClientUtil.Send(mgr.GetSendMessage()); } catch (SocketException ex) { Debug.WriteLine(ex.ToString()); listViewLog.Items.Add(ex.Message); return; } // 読み込みループ開始 // Task停止用のトークン発行 ReadCancelTokenSource = new CancellationTokenSource(); CancellationToken cToken = ReadCancelTokenSource.Token; readLoopTask = ReadLoop(cToken); readLoopTask.ConfigureAwait(false); // ボタンの有効無効を設定 SetControlEnabled(ActionMode.Connect); // ▲▲▲ 業務処理 ▲▲▲ }