紧急求助!线程打开页面问题

shui8iuhs 2009-09-11 04:59:01
我做了两个页面,一个页面是mainform,另外一个页面是from1.
我现在想实现的功能是:在mainform里面建一个线程,当我点击button1的时候,线程来操作打开from1,请教大家我应该怎么弄哦????在此先谢谢啦~

PS:因为form1里面我放了很多的自定义控件,如果不通过线程打开会很慢,而且mainform住窗体会卡死。我想用线程的方式打开,我就可以再mainform窗体里面做其他的操作了。

请大家帮帮我啊~
...全文
86 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
LutzMark 2009-09-14
  • 打赏
  • 举报
回复
也可以用BackgroudWorker
设一下Control.CheckForIllegalCrossThreadCalls = false;
shui8iuhs 2009-09-14
  • 打赏
  • 举报
回复
我试下楼上的方法。谢谢啊
shui8iuhs 2009-09-14
  • 打赏
  • 举报
回复
基本上是解决了,我用的是委托+线程+BackgroundWorker,不过打开页面还是有点慢,不知道有没有更优的方法。
风之影子 2009-09-11
  • 打赏
  • 举报
回复
先声明委托

delegate void HandleInterfaceUpdateDelegate();  //委托,此为重点
HandleInterfaceUpdateDelegate interfaceUpdateHandle;


再实例化委托(放在类的构造方法里)

interfaceUpdateHandle = new HandleInterfaceUpdateDelegate(StartPro); //实例化委托对象


启用新的线程
 Thread td;
public void StartPro() //开辟一个线程
{
td = new Thread(chang);//指向你打开窗体的方法
td.Start();
}


打开你的form1方法

private void chang() //显示新窗体
{
form1 obj = new from1();
obj.ShowDialog();
}


最后就是调用了(在你想调用的地方)加上下面的代码
this.Invoke(interfaceUpdateHandle);//用指定的参数列表执行指定的委托
shui8iuhs 2009-09-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lianshaohua 的回复:]
在mainform的线程中创建form1,然后把form1show出来就行了,但是不能关闭线程,可以在线程的函数中在show出form1后,用一死循环;
[/Quote]

线程中创建form1,怎么弄哦???我觉得这个方法貌似可行
ztenv 2009-09-11
  • 打赏
  • 举报
回复
在mainform的线程中创建form1,然后把form1show出来就行了,但是不能关闭线程,可以在线程的函数中在show出form1后,用一死循环;
鸭梨山大帝 2009-09-11
  • 打赏
  • 举报
回复
一下代码参考,随手KEY的,没进IDE调试,就是开个线程处理即可
如果碰到Unsafe就使用委托吧


using System.Threading;

Thread th = new Thread(showform);

private void showform()
{
from1.Show();
}

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧