zoukankan      html  css  js  c++  java
  • 车辆信息统计报表管理系统子、父线程调用的问题(委托)

            下面这个委托有问题,死循环会导致CPU 100%。子线程不能调用父线程。

            while (!this.WinControl.IsHandleCreated)

            {

     

            }

            this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体

         

           修改后的:

     #region使用线程绑定数据

     

            Thread ThreadBinding = null;

            ThreadStart BindingStart = null;

     

            delegate void BindingHander();

            BindingHander dalegateBinding = null;

            ///<summary>

            ///线程加载数据

            ///</summary>

            private void BindingData()

            {

                BindingStart = new ThreadStart(GetBindingData);

                ThreadBinding = new Thread(BindingStart);

                ThreadBinding.IsBackground = true;

                ThreadBinding.Name = "EngineRotateSpeed_Analysis_Widget";

                ThreadBinding.Start();

                dalegateBinding = new BindingHander(DoBindingData);

            }

     

     

            DataSet ds = new DataSet();

            WidgetDrive mWidgetDrive = new WidgetDrive();

     

            ///<summary>

            ///获取数据与绑定

            ///</summary>

            void GetBindingData()

            {

                try

                {

                    ds = DataLayerTest.Get_Engine_RotateSpeed_Analysis_List_Rpt(mWidgetDrive);//获取数据

                   if (this.WinControl==null||this.WinControl.IsDisposed)

                    {

                       

                    }

                    else

                    {

                            while (!Helper.CanUse(this.WinControl))

                            {

     

                            }

     

                            this.WinControl.Invoke(dalegateBinding);//调用委托去刷新窗体

                    }

                }

     

                finally

                {

                    ThreadBinding.Abort();

                }

            }

     

            ///<summary>

            ///用获取的DataSet分运行时间端绑定器件数据

            ///</summary>

            void DoBindingData()

            {

                ZedGraphControl zgc = base.WinControl as ZedGraphControl;

                switch (mWidgetDrive.ChartType)

                {

                    case TimeType.Day:

     

                        CreateChartDay(ref zgc);//生成日图表

     

                        break;

                    case TimeType.Week:

     

                        CreateChartWeek(ref zgc);//生成周图表。

     

                        break;

                    case TimeType.Month:

     

                        CreateChartMonth(ref zgc);//生成月图表。

     

                        break;

                }

                zgc.Invalidate();

            }

            #endregion

              // Helper类里面的CanUsr方法

    internal static bool CanUse(Control control)

    {

        return control!=null&&!control.IsDisposed && control.IsHandleCreated;

     }

     

  • 相关阅读:
    基本算法2
    基本算法
    读书笔记 《跟老齐学python》
    python杂记 20200207 离线安装 正则
    傻傻分不清之 Cookie、Session、Token、JWT 转载:https://juejin.im/post/5e055d9ef265da33997a42cc
    并发相关 杂记
    原根
    POJ2749 Building roads
    luogu P4735 最大异或和
    SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/Gemgin/p/3136355.html
Copyright © 2011-2022 走看看