private void btnLoginSearch_Click(object sender, EventArgs e) { AoiModel aoiModel = DB.GetAoiModel(); try { lbResult.Visible = true; lbResult.Text = "登录中......"; string md5Pass = Utils.GenerateMD5(tbPassword.Text); User user = aoiModel.users.Where(u => u.Username == tbUsername.Text && u.Password == md5Pass).FirstOrDefault(); if (user != null) { this.DialogResult = DialogResult.Yes; //this.Close(); } else { lbResult.Text = "用户名或密码错误"; lbResult.Visible = true; } } catch (Exception err) { lbResult.Text = "连接数据库出错"; lbResult.Visible = true; LogHelper.WriteLog("Login error", err); } finally { aoiModel.Dispose(); } }
private void btnLogin_Click(object sender, EventArgs e) { lbResult.Visible = true; lbResult.Text = "登录中......"; MySmartThreadPool.Instance().QueueWorkItem((username, password) => { AoiModel aoiModel = DB.GetAoiModel(); try { string md5Pass = Utils.GenerateMD5(password); User user = aoiModel.users.Where(u => u.Username == username && u.Password == md5Pass).FirstOrDefault(); if (user != null) { this.DialogResult = DialogResult.OK; this.Close(); } else { this.BeginInvoke((Action)(() => { lbResult.Text = "用户名或密码错误"; lbResult.Visible = true; })); } } catch (Exception err) { try { this.BeginInvoke((Action)(() => { lbResult.Text = "连接数据库出错"; lbResult.Visible = true; })); //LogHelper.WriteLog("Login error", err); } catch (Exception er) { //LogHelper.WriteLog("Login error", err); } } finally { aoiModel.Dispose(); } }, tbUsername.Text.Trim(), tbPassword.Text.Trim()); }
// 队列处理回调!!所有的界面操作方法写在这个函数里 public void doWork(string message) { if (InvokeRequired) { // If called from a different thread, we must use the Invoke method to marshal the call to the proper GUI thread. // The grab result will be disposed after the event call. Clone the event arguments for marshaling to the GUI thread. BeginInvoke(new RabbitmqMessageCallback(doWork), message); return; } LogHelper.WriteLog("接收到数据\n" + message); //mainChannel = channel; //处理完成,手动确认 //channel.BasicAck(Rabbitmq.deliveryTag, false); //Thread.Sleep(1000); if (workPause) { return; } if (isLeisure) { isLeisure = false; try { // 反序列化json JsonData <Pcb> lst2 = JsonConvert.DeserializeObject <JsonData <Pcb> >(message, new JsonSerializerSettings() { NullValueHandling = NullValueHandling.Ignore }); if (lst2 == null) { RabbitMQClientHandler.ListenChannel.BasicAck(RabbitMQClientHandler.deliveryTag, false); return; } ; #region 开启线程更新数据库 string path = ConfigurationManager.AppSettings["FtpPath"] + lst2.data.PcbPath + "/"; string frontImg = path + "front.jpg"; string backImg = path + "back.jpg"; AoiModel aoiModel = DB.GetAoiModel(); Action <Pcb> t = (pcb) => { lock (aoiModel) { string res = ""; try { if (pcb.results.Count > 0) { pcb.IsError = 1; } aoiModel.pcbs.Add(pcb); aoiModel.results.AddRange(pcb.results); //aoiModel.markers.AddRange(pcb.markers); if (aoiModel.SaveChanges() > 0) { res = pcb.Id + "-" + pcb.PcbNumber + " 已入库"; } else { res = pcb.Id + "-" + pcb.PcbNumber + " 入库失败"; } aoiModel.Dispose(); } catch (Exception er)//UpdateException { res = pcb.Id + "-" + pcb.PcbNumber + " 入库失败,ID冲突"; } this.BeginInvoke((Action)(() => { this.Text = "检验端-v2.0 [" + res + "]"; })); #region 加载ng列表 pcbDetails.BeginInvoke((Action)(() => { pcbDetails.xxxx(lst2.data); pcbDetails.changePause("暂停", true); })); #endregion } }; MySmartThreadPool.Instance().QueueWorkItem <Pcb>(t, lst2.data); #endregion #region 硬盘监控 //MySmartThreadPool.Instance().QueueWorkItem((str, lim) => { // try // { // string disk = str.Split(':')[0]; // long freeGb = Utils.GetHardDiskFreeSpace(disk); // if (freeGb < lim) // { // MessageBox.Show(disk +"盘空间已经不足"+lim+"GB,请及时清理", "报警", MessageBoxButtons.OK, MessageBoxIcon.Warning); // } // } // catch (Exception ex) // { // throw ex; // } //}, ConfigurationManager.AppSettings["FtpPath"], Convert.ToInt32(ConfigurationManager.AppSettings["DiskRemind"])); #endregion #region 处理图片 //Graphics ghFront = null; //Graphics ghBack = null; //int drawNum = 0; //int allNum = lst2.data.results.Count; //// 画框所有线程中调用显示图片的委托 //Action showImg = () => //{ // drawNum++; // if (drawNum >= allNum) // { // if (imageFront != null) // { // twoSidesPcb.BeginInvoke((Action)(() => // { // twoSidesPcb.showFrontImg(imageFront); // })); // imageFront.Save(path + "drawfront.jpg"); // } // if (imageBack != null) // { // twoSidesPcb.BeginInvoke((Action)(() => // { // twoSidesPcb.showBackImg(imageBack); // })); // imageBack.Save(path + "drawback.jpg"); // //stpwth.Stop(); // //long a = stpwth.ElapsedMilliseconds; // //stpwth.Restart(); // } // } //}; //// 裁剪 //Action<Rectangle, string, string, int> actCrop = (rect, pp, fi, ii) => //{ // if (!File.Exists(pp)) // { // var partImg = new ImageFactory().Load(fi); // partImg.Crop(rect); // partImg.Save(pp); // if (ii == 0) // { // if (File.Exists(pp)) // { // partOfPcb.BeginInvoke((Action)(() => // { // partOfPcb.showImgThread(pp); // })); // partImg.Dispose(); // //break; // } // //int timeOut = 0; // //while (timeOut < 50) // //{ // // timeOut++; // // Thread.Sleep(10); // //} // } // } //}; //// 正面图画框的委托 //Action<Result, Rectangle, int> actFrontDrawImg = (result, rect, index) => //{ // lock (ghFront) // { // #region 在画框之前先裁剪下来用作局部窗体显示使用 // //MySmartThreadPool.Instance().QueueWorkItem(actCrop, rect, path + result.PartImagePath, frontImg, index); // #endregion // ghFront.DrawString(result.NgType, new Font("宋体", 10, FontStyle.Bold), Brushes.Red, rect.X, rect.Y - 15); // ghFront.DrawRectangle( // new Pen(Color.Red, 3), // rect); // this.BeginInvoke(showImg); // } //}; //// 背面图画框的委托 //Action<Result, Rectangle, int> actBackDrawImg = (result, rect, index) => //{ // lock (ghBack) // { // #region 在画框之前先裁剪下来用作局部窗体显示使用 // //MySmartThreadPool.Instance().QueueWorkItem(actCrop, rect, path + result.PartImagePath, backImg, index); // #endregion // ghBack.DrawString(result.NgType, new Font("宋体", 10, FontStyle.Bold), Brushes.Red, rect.X, rect.Y - 15); // ghBack.DrawRectangle( // new Pen(Color.Red, 3), // rect); // this.BeginInvoke(showImg); // } //}; //for (int i = 0; i < lst2.data.results.Count; i++) //{ // var result = lst2.data.results[i]; // string[] reg = result.Region.Split(','); // Rectangle rect = new Rectangle( // int.Parse(reg[0]), // int.Parse(reg[1]), // int.Parse(reg[2]), // int.Parse(reg[3])); // if (result.IsBack == 1) // { // if (imageBack == null) // { // imageBack = new Bitmap(backImg); // ghBack = Graphics.FromImage(imageBack); // } // MySmartThreadPool.Instance().QueueWorkItem(actBackDrawImg, result, rect, i); // } // else // { // if (imageFront == null) // { // //if (!stpwth.IsRunning) // //{ // // stpwth.Restart(); // //} // imageFront = new Bitmap(frontImg); // //stpwth.Stop(); // //long a = stpwth.ElapsedMilliseconds; // //a = 0; // ghFront = Graphics.FromImage(imageFront); // } // MySmartThreadPool.Instance().QueueWorkItem(actFrontDrawImg, result, rect, i); // } //} //} //catch (Exception err) //{ // string aa = err.Message; //} #endregion } catch (Exception err) { isLeisure = true; RabbitMQClientHandler.ListenChannel.BasicAck(RabbitMQClientHandler.deliveryTag, false); this.BeginInvoke((Action)(() => { this.Text = "检验端-v2.0 [数据异常-请把当前板放回重新检测]"; MessageBox.Show("数据异常-请把当前板放回重新检测", "异常报警", MessageBoxButtons.OK, MessageBoxIcon.Error); })); LogHelper.WriteLog("处理失败\n" + message, err); } } else { RabbitMQClientHandler.ListenChannel.BasicNack(RabbitMQClientHandler.deliveryTag, false, true); } // isLeisure = true; // 这个需要在pcbDetails页面最后一个执行完成后执行 // mainChannel.BasicAck(Rabbitmq.deliveryTag, false); // 这个需要在pcbDetails页面最后一个执行完成后执行 //htmlLabel1.Invoke((Action)(() => //{ // htmlLabel1.Text = $"{message} is news, deal it"; //})); //channel.BasicNack(Rabbitmq.deliveryTag, false, true); }