winform怎么做等待窗体,有登录窗体loginForm  等待窗体waitform 主窗体 mainForm  等待窗体是一个图片 

解决方案 »

  1.   

    大仙息怒!我刚使用csdn发帖子 
      

  2.   

    ThreadPool.QueueUserWorkItem(new WaitCallBack(加载的方法),等待窗体)
      

  3.   

    1.新起一个线程 最好用Delegate起(主要是个人直接用Tread起的时候,成功次数太少,有阴影了……)新起的线程中 启动你的那个等待窗体,完后,主窗体的东西跑完后 把新起的那个线程关掉。
    2.用委托+事件 解决 这样貌似麻烦点……
      需要两组委托和事件 还有点绕
      

  4.   

    给你写一个例子。你可以创建Form1、Form2,并且在Form1上增加一个Buttonusing System;
    using System.Threading;
    using System.Windows.Forms;namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void a()
            {
                Thread.Sleep(5000);     //这里模拟一个耗时操作
            }        private void button1_Click(object sender, EventArgs e)
            {
                var win = new Form2();
                this.BeginInvoke(new Action(() =>
                {
                    win.ShowDialog();
                }));
                ThreadPool.QueueUserWorkItem(h =>
                {
                    a();
                    this.BeginInvoke(new Action(() => win.Close()));
                });
            }    }
    }
      

  5.   

    这里,Form1窗口首先使用模态窗口方式显示了Form2,然后去执行耗时的后台操作a,等做完了就关闭Form2。
      

  6.   

    你要注意的是,Form1执行的耗时操作并不是在窗口主线程中的。也就是说各种界面操作消息是一样在响应的,而不会让Form1和Form2“死掉”。只不过是满足ShowDiaglog操作的逻辑而已,但是并没有额外地区阻塞主线程。