예제 #1
0
        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();
            }
        }
예제 #2
0
 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());
 }
예제 #3
0
        // 队列处理回调!!所有的界面操作方法写在这个函数里
        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);
        }