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();
}
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# 在线程中显示一个新窗体
- C# 在线程中显示一个新窗体
- C# 线程中显示一个新窗体
- C#多线程学习(二) 如何操纵一个线程
- C#程序如何把窗体文件从从一个项目中复制到另一个项目
- C#之WinForm基础 点击button,显示另外一个窗体
- C#多线程学习(二) 如何操纵一个线程
- 接下来将介绍C#如何设置子窗体在主窗体中居中显示,本文提供详细的操作步骤,需要的朋友可以参考下
- 如何在在主窗体显示前显示一个窗体既广告窗体
- .net C#线程连接Join的技巧,如何真正让一个线程结束,另外一个线程启动
- 如何弹出一个模式窗口来显示进度条[c#]
- c#中如何跨线程调用windows窗体控件?
- 如何开辟一个专用线程控制进度条的循环显示
- c#如何将子窗体显示到父窗体的容器(panel)控件中
- C#多线程学习(二) 如何操纵一个线程
- 黄聪:C#如何让窗体永远在窗体最前面显示
- C# 如何实现一个线程暂停和继续
- C#多线程学习(二) 如何操纵一个线程
- c#中如何跨线程调用windows窗体控件?
- C#多线程学习2—— 如何操纵一个线程