如题, 我在线程里NEW 窗口.show()之后新窗体卡死 旧窗体运行正常。请问有怎么办法解决这问题么?

解决方案 »

  1.   

    用委托.....
            delegate void dShowForm1();
    void ShowForm1()
    {
    Form1 f=new Form1();
    f.Show();
    }//其他线程里:
    dShowForm1 sf=new dShowForm1(ShowForm1);
    this.Invoke(sf);
      

  2.   

    是的将为弹出,不是创建线程,不可调用的异常,假如你要,将一个线程中的值传递给窗口可以这样:(示例)
    //片断:
    //效果,一个线程不断让测试数据data增加1,然后把整个过程动态的显示到窗口的标题
    //上
            int data;        System.Threading.Thread t;        public void TestThreadAndUI_lr(object o)
            {
                if (o == null)
                {
                    t = new System.Threading.Thread(new System.Threading.ThreadStart(this.TestThreadAndUI_ld));
                    t.Start();
                }
            }
            void TestThreadAndUI_ld()
            {
                for (int i = 0; i < 100; i++)
                {
                    Thread.Sleep(250);
                    this.data++;
                    //这是关键代码,是跨线程向控件传值的关键代码;
                    EFL.UI.Invoke(Delegate.CreateDelegate(typeof(MethodInvoker), this, "ShowData"));
                }
            }
            /// <summary>
            /// 线程应答
             /// </summary>
            void ShowData()
            {
                EFL.UI.Text = this.data.ToString();
            }
    有关更多讯息请查看,MSDN,关于跨线程调用的帮助文档;
      

  3.   

    发现问题了。。忘记停止线程 导致窗口一直在NEW 一直在SHOW 谢谢各位哟