/// <summary> /// 開始 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected override void ButtonF1_Click(object sender, EventArgs e) { Logger.StartMethod(MethodBase.GetCurrentMethod().Name); base.ButtonF1_Click(sender, e); // ▼▼▼ 業務処理 ▼▼▼ if (TcpServerUtil != null) { // 既に接続している場合、再接続前に破棄する TcpServerUtil.Dispose(); } // Listen string ip = tboxIP.Text; int.TryParse(tboxPort.Text, out int port); TcpServerUtil = new TcpServerManager(ip, port); listViewLog.Items.Add($"Listenを開始しました。IP[{ip}] Port[{port}]"); // Task停止用のトークン発行 CancelTokenSource = new CancellationTokenSource(); CancellationToken cToken = CancelTokenSource.Token; // Accept Loop Start acceptLoopTask = AcceptLoop(cToken); // ボタンの有効無効を設定 SetButtonEnabled(ActionMode.Listen); // ▲▲▲ 業務処理 ▲▲▲ Logger.EndMethod(MethodBase.GetCurrentMethod().Name); }
private async void FormTcpServer_FormClosing(object sender, FormClosingEventArgs e) { CancelTokenSource?.Cancel(); // Lisner Stop And TcpClient Close TcpServerUtil?.Dispose(); // Accept And Read Task Wait List <Task> waitTasks = new List <Task>(); if (acceptLoopTask != null) { waitTasks.Add(acceptLoopTask); } foreach (TcpServerManager.ClientInfo mgr in dicTcpClient.Values) { waitTasks.Add(mgr.ReadTask); } await Task.WhenAll(waitTasks); // Logger Dispose Logger?.Dispose(); }