private void OnLogin(IScsServerClient sc, LoginCmd cmd) { Thread.Sleep(3000); LoginCmdAck ack = new LoginCmdAck(); ack.RepliedMessageId = cmd.MessageId; ack.sender_name = this_name; ack.status = 0; Helper.tcp_server_send(sc, ack); }
private void p1_client_print(bool want_report, bool want_dcm) { bool print_dcm_ok = false; bool print_report_ok = false; try { ui_pre_print(); //根据实际情况更新打印需求 want_report = want_report && this.lblReportPrintFlag.Text.Contains("打印"); want_dcm = want_dcm && this.lblDcmPrintFlag.Text.Contains("打印"); //实际情况不允许打印 if (!want_report && !want_dcm) { return; } #region 多次打印,需身份验证 string printer_id = ""; bool need_verification = (want_report && this.lblReportPrintFlag.Text.Contains("已")) || (want_dcm && this.lblDcmPrintFlag.Text.Contains("已")); if (need_verification) { LoginUserItem item = get_login(); if (item == null) { return; } start_p1_tcp_client(); connect_p1_tcp_client(_p1_server_ip, _p1_server_port); Helper.add_text(this.txtMsg, string.Format("{0}连接数据服务器P1: {1}{0}", Environment.NewLine, (Helper.is_tcp_client_normal(_p1_tcp_client) ? "成功" : "失败"))); Helper.add_text(this.txtMsg, string.Format("{0}向数据服务器P1发身份验证命令, 等待服务器P1返回结果...{0}", Environment.NewLine)); //发验证命令 LoginCmd login = new LoginCmd(); login.sender_name = this_name; login.login_user.login_name = item.login_name; login.login_user.login_psw = item.login_psw; LoginCmdAck login_ack = Helper.tcp_client_send_and_response(_p1_tcp_client, login) as LoginCmdAck; Helper.add_text(this.txtMsg, string.Format("{0}数据服务器P1返回身份验证结果: {1}{0}", Environment.NewLine, (login_ack == null ? "失败" : (login_ack.status != 0 ? "失败" : "成功")))); if (login_ack == null) { throw new MsgBoxException("通信异常", "请确认与数据服务器P1之间的网络连接是否正常."); } if (login_ack.status != 0) { throw new MsgBoxException("验证失败", string.Format("密码错误或者工号不存在.错误代码={0}.", login_ack.status)); } //记录工号,后面备用 printer_id = item.login_name; } #endregion //可以考虑将三项任务中的2项改为并行执行,调用线程等待这2项任务的返回结果 Task <bool> task_dcm = null; Task <bool> task_report = null; #region 胶片本地打印 if (is_local_print_dcm && want_dcm) { task_dcm = Task.Factory.StartNew(() => { return(local_print_dcm(this.lblUserID.Text.Trim(), printer_id)); }); } #endregion #region 报告本地打印 if (is_local_print_report && want_report) { task_report = Task.Factory.StartNew(() => { return(local_print_report(this.lblUserID.Text.Trim(), printer_id)); }); } #endregion #region 报告和(/或者)胶片用服务器打印 try { if ((!is_local_print_report && want_report) || (!is_local_print_dcm && want_dcm)) { Helper.add_text(this.txtMsg, string.Format("{0}连接数据服务器P1: {1}{0}", Environment.NewLine, (Helper.is_tcp_client_normal(_p1_tcp_client) ? "成功" : "失败"))); string which = ""; if ((!is_local_print_report && want_report) && (!is_local_print_dcm && want_dcm)) { which = "报告和胶片"; } else if (!is_local_print_report && want_report) { which = "报告"; } else { which = "胶片"; } Helper.add_text(this.txtMsg, string.Format("{1}向数据服务器P1发打印{0}命令, 等待服务器P1返回结果...{1}", which, Environment.NewLine)); start_p1_tcp_client(); connect_p1_tcp_client(_p1_server_ip, _p1_server_port); //发打印命令 ServerPrintUserCmd spuc = new ServerPrintUserCmd(); spuc.sender_name = this_name; spuc.user_id = this.lblUserID.Text.Trim(); spuc.printer_id = printer_id; spuc.print_dcm = !is_local_print_dcm && want_dcm; spuc.print_report = !is_local_print_report && want_report; ServerPrintUserCmdAck spuc_ack = Helper.tcp_client_send_and_response(_p1_tcp_client, spuc, 60000) as ServerPrintUserCmdAck; Helper.add_text(this.txtMsg, string.Format("{0}数据服务器P1返回打印结果: {1}{0}", Environment.NewLine, (spuc_ack == null ? "失败" : "成功"))); if (spuc_ack == null) { throw new MsgBoxException("通信异常", "请确认与数据服务器P1之间的网络连接是否正常."); } if (spuc_ack.print_dcm) { Helper.add_text(this.txtMsg, string.Format("{0}打印胶片: {1}{0}", Environment.NewLine, (spuc_ack.print_dcm_ack == 0 ? "成功" : "失败"))); } if (spuc_ack.print_report) { Helper.add_text(this.txtMsg, string.Format("{0}打印报告: {1}{0}", Environment.NewLine, (spuc_ack.print_report_ack == 0 ? "成功" : "失败"))); } if (spuc_ack.print_dcm) { print_dcm_ok = (spuc_ack.print_dcm_ack == 0); } if (spuc_ack.print_report) { print_report_ok = (spuc_ack.print_report_ack == 0); } } } catch (MsgBoxException ex) { Helper.add_text(this.txtMsg, string.Format("{0}{1}, {2}{0}", Environment.NewLine, ex.Title, ex.Message)); } catch (System.Exception ex) { EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}", ex.Message, ex.StackTrace, Environment.NewLine)); } #endregion if (task_dcm != null) { task_dcm.Wait(); print_dcm_ok = task_dcm.Result; } if (task_report != null) { task_report.Wait(); print_report_ok = task_report.Result; } } catch (MsgBoxException ex) { Helper.add_text(this.txtMsg, string.Format("{0}{1}, {2}{0}", Environment.NewLine, ex.Title, ex.Message)); } catch (System.Exception ex) { EzLogger.GlobalLogger.warning(string.Format("{0}{2}{1}{2}", ex.Message, ex.StackTrace, Environment.NewLine)); } finally { stop_p1_tcp_client(); ui_post_print(print_dcm_ok, print_report_ok); } }