您的位置:首页 > 编程语言 > C#

C# 如何在线程中显示一个新窗体

2010-03-31 16:31 281 查看
有很多朋友不知道怎么在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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c# button thread object