/// <summary> /// 为每一个选择的要进行滚动的图形构造一个线程 /// </summary> /// <param name="Selected_Drawings"></param> /// <remarks></remarks> private void ConstructRollingThreads(Drawings_For_Rolling Selected_Drawings) { AbortAllThread(F_arrThread); // ------------------------------------- 包含所有要进行滚动的线程的数组 short SelectedDrawingsCount = Selected_Drawings.Count(); // F_arrThread = new Thread[SelectedDrawingsCount - 1 + 1]; F_arrThreadDelegete = new ParameterizedThreadStart[SelectedDrawingsCount - 1 + 1]; //' short btThread = (short)0; // // // ------------------------------------------ 标高剖面图 ClsDrawing_ExcavationElevation ele = Selected_Drawings.SectionalView; if (ele != null) { //为线程数组中的元素线程赋值 F_arrThreadDelegete[btThread] = new ParameterizedThreadStart(ele.Rolling); Thread thd = new Thread(F_arrThreadDelegete[btThread]); thd.Name = "滚动标高剖面图"; F_arrThread[btThread] = thd; F_arrThread[btThread].IsBackground = true; btThread++; } // ------------------------------------------ 开挖平面图 ClsDrawing_PlanView Plan = Selected_Drawings.PlanView; if (Plan != null) { //为线程数组中的元素线程赋值 F_arrThreadDelegete[btThread] = new ParameterizedThreadStart(Plan.Rolling); Thread thd = new Thread(F_arrThreadDelegete[btThread]); thd.Name = "滚动开挖平面图"; F_arrThread[btThread] = thd; F_arrThread[btThread].IsBackground = true; btThread++; } // ------------------------------------------ 监测曲线图 foreach (clsDrawing_Mnt_RollingBase Moni in Selected_Drawings.RollingMnt) { //为线程数组中的元素线程赋值 F_arrThreadDelegete[btThread] = new ParameterizedThreadStart(Moni.Rolling); Thread thd = new Thread(F_arrThreadDelegete[btThread]); thd.Name = "滚动监测曲线图"; F_arrThread[btThread] = thd; F_arrThread[btThread].IsBackground = true; btThread++; } }
//选择复选框或者列表项——更新滚动线程与窗口界面 /// <summary> /// !选择的图形发生改变时,更新滚动线程与窗口界面。 /// </summary> /// <param name="Selected_Drawings">更新后的要进行滚动的图形</param> /// <remarks>此方法不能直接Handle复选框的CheckedChanged或者列表框的SelectedIndexChanged事件, /// 因为此方法必须是在更新了Me.F_SelectedDrawings属性之后,才能去更新窗口界面。</remarks> private void SelectedRollingDrawingsChanged(Drawings_For_Rolling Selected_Drawings) { // ConstructRollingThreads(Selected_Drawings); this.FocusOn_DateSpan = Refesh_FocusOn_DateSpan(Selected_Drawings); // if (Selected_Drawings.Count() > 0) { F_blnHasDrawingToRoll = true; } else { F_blnHasDrawingToRoll = false; } RefreshUI_SelectedDrawings(F_blnHasDrawingToRoll, this.F_FocusOn_DateSpan); // }