日期:2014-05-17  浏览次数:20975 次

百分问题 C#一个困扰了好几天的问题,winform界面很多控件即时刷新时,界面很卡,已使用BeginInvoke
目前做一个即时监控软件,大数据量接收后,分门别类的传输到winform上的各个控件,显示
winform上大概有40多个控件,主要为 textbox,NI系列的AxCWSlide,AxCWKnob,AxCWGraph
接收端启用一个事件把数据传递到winform端,winform端按照规则分类后传递到各个控件,规则我是在控件的tag内置定的

现在的问题是,数据量大到一定层度时(远远未到要求值),winform界面开始卡,显示开始不正常
我怀疑是UI线程堵塞,处理不过来了,但是又找不到什么好的办法
我以前做C的,这是第一个C#项目,请各位C#大牛多多指点,兄弟先谢谢了

附上部分代码


/////////////
////////前面通过这个事件激活winform这边的处理函数ShowData()
        KindsFunction.SendDat += new KindsFunction.SendDatDelegate(ShowData);        
/////////////



        private delegate void ShowTextDelegate(double[] Dat);

        private void ShowData(object Dat)
        {
            {
                if (this.InvokeRequired)
                {
                    double[] data = null;
                    data = (double[])Dat;//传过来的数据

                    object[] obj ={ data };
                     
                    //异步调用委托
                    this.BeginInvoke(new ShowTextDelegate(ShowText), obj);
                }
                else
                {
                    //ShowText_short(data_short);
                    //ShowText_byte(data_byte);
                }
            }
        }

        string SubTag;
        string GraphType = "array";

        //界面上的控件处理
        private void ShowText(double[] Dat)
        {
            try
            {
                foreach (Control temp in this.Controls)///遍历整个控件