怎麼在thread中開啟一個窗體

灰太狼發表於2006-06-21

有很多朋友不知道怎麼在thread中開啟一個窗體,總是說沒有反應,下面我就說說這方面自己的經驗。程式碼如下:

 

private void ThreadFunc()

{

    //run your coding;

    Form temp = new Form();

    temp.Show();

    //run your coding;

}

private void button1_Click(object sender, System.EventArgs e)

{

    FormThread = new Thread( new ThreadStart( ThreadFunc ) );

    FormThread.Start();

}

 

像上面的程式碼,若點選button按鈕,大家可以看到被建立的窗體閃了一下,就消失了,這是因為你線上程中建的窗體,所有的資源都是屬於這個執行緒的,所以當這個執行緒結束後,它的資源也被回收了,當然C#也就自動把窗體給關閉了。

    正確的方法是用Invoke呼叫,程式碼如下:

private void ThreadFunc()

{

    MethodInvoker mi = new MethodInvoker(this.ShowForm);

    this.BeginInvoke(mi);

}

private void ShowForm(  )

{

    Form temp = new Form();

    temp.Show();

}

private void button1_Click(object sender, System.EventArgs e)

{

    FormThread = new Thread( new ThreadStart( ThreadFunc ) );

    FormThread.Start();

}

相關文章