先直接调用run,看窗体是否正常,如果不正常,那是窗体有问题,否则则是线程的问题,解决办法如下:
        void run()
        {
            MethodInvoker mi = delegate()
            {
                Form2 f2 = new Form2();
                f2.Show();
            };
            Invoke(mi, null);
        }

解决方案 »

  1.   

    打开窗口是打开窗口,跟“需要监控数据”是两回事。你到了该“监控数据”的时候再去贴你的问题吧,比如说你的Form2加载了之后才启动了某个线程。而你的代码中,“监控数据”是空洞无物的,你没有监控数据啊。这样“言行不一”经常给自己造成许多额外多出来的问题。
      

  2.   

     Form2 f2 = new Form2();提到类级变量就可以了,在线程方法内部执行完毕后就被GC掉了
      

  3.   

    void run() {
                this.Invoke((MethodInvoker)delegate
                {
                    Form2 f2 = new Form2();
                    f2.Show();
                });
            }这样写就不会被干掉了。