public void Function1()
{
    form1 f = new Form();    Thread trd = new Thread(new ThreadStart(f.Show));
    
    // 在这里做点事情……    trd.Abort();
}上面的代码,我的企图是想让新开的窗口受一个新的线程控制,可是好像不行,请问该如何做呢?

解决方案 »

  1.   

    UI界面不允许非创建它的线程访问操作。
    也就是说UI必须要创建它的线程去处理 一般程序就是主线程。  或者你可以用子线程去创建UI或者用线程推送 来告诉主线程 完成显示操作 
       private void writeText()
            {
                if (this.InvokeRequired)
                {
                    this.Invoke(new dThread(writeText));
                }
                else
                {
                    this.textBox1.Text = "jinjazz";
                }
            }参考 MSDN  关于 INVOKE   INVOKEREQUIRED
      

  2.   

    你这样写是不对的。。
    public void Function1()
    {
        Thread trd = new Thread(new ThreadStart(ThreadPro));
        
        // 在这里做点事情……    trd.Abort();
    }private void ThreadPro()
    {
        form1 f = new Form();
        f.Show();
        //DoSomething;
    }
    //如果要在不是创建该控件的线程上访问空间,,要用Control.Invoke()
      

  3.   

    public void Function1()
    {
        form1 f = new Form();       
        // 在这里做点事情……}
    在别的线程中做 Thread trd = new Thread(new ThreadStart(Function1));
      

  4.   

    public void Function1()
    {
        form1 f = new Form();    Thread trd = new Thread(new ThreadStart(f.Show));
        
        // 在这里做点事情……    trd.Abort();
    }
    楼住  “在这里做点事” 你这和线程没关系。 做点事还是再住线程了
      

  5.   

    比如你想在另外一个线程里面每隔10秒刷新这个Formprivate void btn_Refresh_Click(object sender, EventArgs e)
            {
                Thread   t = new Thread(RefreshThread);
                t.Start();            
            }
    private void RefreshThread()
    {
     While(true)
        {
            Thread.sleep(10000);
            this.RefreshForm();
        }   
    }
    private void RefreshForm()
    {
        if (this.InvokeRequired)
                {
                    this.Refresh();
                }
                else
                    this.Refresh();
    }