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

窗体数据加载的方法探讨.
   请教一个问题,我比较迷糊:我的一个B窗体要加载的内容比较多.我在主窗体B启动的时候,顺便把这个A窗体通过B.show启动起来了.只是隐藏了,不现实出来.这样做发现每次都能成功加载. 我后来一想,如果把B窗体的Load事件中启动一个线程,完成B窗体加载的过程,会不会快些呢.我就按照这个思路,把B窗体的Load事件中写了个委托线程,专门加载B窗体.发现这时候,B有时候能加载成功,有时候只能加载一部分. 这是为什么呢

我要实现的目的是主窗体A启动显示之前,把窗体B的内容加载好. 并提高点效率,用线程加载.

------解决方案--------------------
debug最好能贴源码,容易发现问题。
A、B有点混


加载很多东西的话,可以尝试创建一个用来加载的类,类里附加一个bool loaded,用于判断加载是否完成。
然后在主窗口里用timer去确认loaded。如果完成了,允许显示,如果未完成就禁止显示。
线程的操作可以直接放到加载类里


public delegate void Loading();
    public class Loader
    {
        public static bool loaded=false ;
        public static Loading loading;
        public static void Start()
        {
            Thread a = new Thread(tr);
            a.Start();
        }
        public static void tr()
        {
            if (loading != null)
                loading();
            loaded =true ;
        }
        
    }

这个供参考