private void btnAGVRun_Click_1(object sender, EventArgs e) { if (btnAGVRun.Text == "开") { btnAGVRun.Text = "停"; for (int j = 0; j <= Config.i; j++) { Config.AGVStar1[j] = 1; AGVClass.AGVLabelRun(Config.AGVNum1[j]); } for (int j = 4000; j > 0; j--) //*使有足够时间去通知所有阻塞线程*/ { Config.autoEvent.Set(); //通知阻塞的线程继续执行 } } else { btnAGVRun.Text = "开"; for (int j = 0; j <= Config.i; j++) { AGVClass.AGVLabelStop(Config.AGVNum1[j]); /*j 表示Config.AGVNum1第j个的内容*/ //暂停所有AGV线程 Config.AGVStar1[j] = 0; /////停止移动AGV } } }
private void BtnADD_Click(object sender, EventArgs e) { Config.i++; Config.Equal = "false"; try { for (int j = 0; j < Config.i; j++) { if (Config.AGVNum1[j] == int.Parse(ComAGVNum.Text)) ///如果输入的AGV已经存在,那么就把当前的目的地值赋给它 { Config.Equal = "true"; Config.AGVTar1[j] = (int.Parse(ComAGVTar.Text)); Config.i--; } } if (Config.Equal == "false") { Config.AGVNum1.Add(int.Parse(ComAGVNum.Text)); Config.AGVPath1.Add(int.Parse(ComAGVPath.Text)); Config.AGVTar1.Add(int.Parse(ComAGVTar.Text)); } } catch { for (int j = 0; j < Config.i; j++) { if (Config.AGVNum1[j] == 0) { Config.Equal = "true"; Config.i--; } } if (Config.Equal == "false") { Config.AGVNum1.Add(0); Config.AGVPath1.Add(11); Config.AGVTar1.Add(1); } } Config.AGVLoct1.Add(1); ///////路径上的位置 Config.AGVStar1.Add(1); if (Config.Equal == "false") { AGVClass.AGVThread(Config.i, Config.AGVLabel[Config.AGVNum1[Config.i]]); //创建线程 } AGVClass.AGVLabelStop(Config.AGVNum1[Config.i]); //阻塞线程 btnAGVRun.Text = "开"; if (Config.AGVLabel[Config.i] != null) ///////使增加的AGV可视 { if (Config.AGVStar1[Config.i] == 1) { AGVClass.MoveAGV(Config.i, Config.AGVPath1[Config.i]); Config.AGVLabel[Config.AGVNum1[Config.i]].Visible = true; } } }