//处理节点掉线的任务 private void ProcessNodeDrop(ref Boolean autoReconfigFlag) { //有匹配的结果才进行处理 if (_appMatchedTopoList.Count > 0 && _choosedMatchedListNum >= 0) { bool needReconfigFlag = false; //是否需要进行重构的标志 var chooseList = _appMatchedTopoList[_choosedMatchedListNum]; foreach (var node in chooseList) { if (!_onLineFlags[node.SNode.FrameId][node.SNode.SlotId]) { needReconfigFlag = true; break; } } if (needReconfigFlag) { if (autoReconfigFlag)//判断是否为自动重构 { MainForm.SetOutPutText("进行自动匹配。。。"); ReconfigForm recnfForm = new ReconfigForm(this, _appMatchedTopoList, _onLineFlags); _choosedMatchedListNum = recnfForm.FindFirstValidStrategy(); if (_choosedMatchedListNum < 0) { _reconfigFlag = false; MessageBox.Show("无有效匹配方案!"); MainForm.SetOutPutText("无有效匹配方案!"); } else { SetMatchedTopo(_choosedMatchedListNum); _reconfigFlag = true; MainForm.SetOutPutText("自动匹配成功!选择方案" + (_choosedMatchedListNum + 1)); } } else { _reconfigFlag = ChooseStrategy(ref autoReconfigFlag); } } } }
/// <summary> /// 策略选择 /// </summary> /// <returns>是否为有效选择</returns> public bool ChooseStrategy(ref Boolean autoReconfigFlag) { bool flag = false; //显示重构窗体 ReconfigForm recnfForm = new ReconfigForm(this, _appMatchedTopoList, _onLineFlags); recnfForm.AutoReconfigFlag = autoReconfigFlag; recnfForm.ShowDialog(); if (recnfForm.DialogResult == DialogResult.Yes) { _choosedMatchedListNum = recnfForm.ChoosedIndex; if (_choosedMatchedListNum >= 0)//有效的选择项 { SetMatchedTopo(_choosedMatchedListNum); autoReconfigFlag = recnfForm.AutoReconfigFlag; flag = true; } } recnfForm.Dispose(); return(flag); }