情况如下:A窗体加载时发生
1. 取得数据(这里用多线程的话)
2.执行后面的操作(前提是必须取得数据)问题:多线程的时候,在1里还在取数据中,但程序已经往下执行到2了(因为两个在不同线程里),因为没取到数据,所以程序出错因为取数据是共用的函数,都是用多线程的,像这样的问题,同志们是怎么处理的呢!

解决方案 »

  1.   

    Join
    或者
    在线程里取到数据后,再调用后面的操作,如果后面的操作涉及到界面,记得使用委托或者Invoke
      

  2.   


    不是很明白1。因为取数据函数都是共用的,但取数据后的第2个要执行的东西只有加载窗体时才做,所有取数据后再调用后面要执行的不行吧
    2。join听不懂,小菜来的,嘿嘿,能说详细点吗,老哥
      

  3.   


    class A
    {
      private AutoResetEvent allDone = new AutoResetEvent(false);
      private void Getdate()
      {
        //获取数据
         allDone.Set();
      }
      private void load()
      {
       getDate();
       allDone.WaitOne();
       //继续其他的操作
      }
    }
      

  4.   

       
    第一种方法
      private void fun()
            {
                // 取数据
            }        private void FrmMain_Load(object sender, EventArgs e)
            {
                Thread t = new Thread(new ThreadStart(fun));
                t.Start();
                t.Join();
                // 执行其他操作
            }
    第二种方法
            private void fun()
            {
                // 取数据
                // 执行其他操作
            }        private void FrmMain_Load(object sender, EventArgs e)
            {
                Thread t = new Thread(new ThreadStart(fun));
                t.Start();
            }
      

  5.   

    4楼前面写错了,getData应该用线程启动