private async void BtnSwitchService_Click(object sender, EventArgs e) { try { if (btnSwitchService.Text == @"启动") { // 启动服务 if (!_server.Start()) { throw new Exception($"error code: {_server.ErrorCode}, error message: {_server.ErrorMessage}"); } btnSwitchService.Text = @"停止"; // 等待服务停止 await _server.WaitAsync(); // 停止以后还原按钮标题 btnSwitchService.Text = @"启动"; btnSwitchService.Enabled = true; } else { btnSwitchService.Enabled = false; // 等待服务停止 await _server.StopAsync(); } } catch (Exception ex) { AddLog($"exception: {ex.Message}"); } }
private async void BtnSwitchService_Click(object sender, EventArgs e) { try { if (btnSwitchService.Text == @"启动") { // 2个线程处理耗时操作, 作为相对耗时的任务, 可根据业务需求多开线程处理 if (!_threadPool.Start(2, RejectedPolicy.WaitFor)) { btnSwitchService.Enabled = false; throw new Exception($"线程池启动失败, 错误码: {_threadPool.ErrorCode}"); } // 启动服务 if (!_server.Start()) { throw new Exception($"error code: {_server.ErrorCode}, error message: {_server.ErrorMessage}"); } btnSwitchService.Text = @"停止"; // 等待线程池停止 await _threadPool.WaitAsync(); // 等待服务停止 await _server.WaitAsync(); // 停止以后还原按钮标题 btnSwitchService.Text = @"启动"; btnSwitchService.Enabled = true; } else { btnSwitchService.Enabled = false; // 停止并等待线程池任务全部完成 await _threadPool.StopAsync(); // 等待服务停止 await _server.StopAsync(); } } catch (Exception ex) { AddLog($"exception: {ex.Message}"); } }