我现在有个界面上面控件比较多,远程打开窗体有点慢,所以想加一个等待的对话框
我想用的是ThreadPool+Invoke,下面是一个用线程打开窗体的方法 private void DoWork(Form fromname)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o)
{
fromname.Show();
}));
}但是现在我想要的效果是点击一个按钮,就打开一个等待的窗体,然后后台线程通过我传进去的窗体名称打开对应的窗体,窗体控件全部加载完毕后关闭线程同时将这个等待窗体关掉,望高手赐教,谢谢
我想用的是ThreadPool+Invoke,下面是一个用线程打开窗体的方法 private void DoWork(Form fromname)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o)
{
fromname.Show();
}));
}但是现在我想要的效果是点击一个按钮,就打开一个等待的窗体,然后后台线程通过我传进去的窗体名称打开对应的窗体,窗体控件全部加载完毕后关闭线程同时将这个等待窗体关掉,望高手赐教,谢谢
{
ThreadPool.QueueUserWorkItem(new WaitCallback(delegate(object o)
{
Application.Run(new FormName());
}));
}
请体会我写的测试代码:
public partial class Form1 : Form
{
private bool mNotMainThread = false;
public Form1()
{
InitializeComponent();
} public Form1(bool NotMainThread)
{
InitializeComponent();
mNotMainThread = NotMainThread;
} private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(ThreadFun);
t.Start();
} public void ThreadFun()
{
Form1 frm = new Form1(true);
frm.ShowDialog();
} private void Form1_Load(object sender, EventArgs e)
{
if (mNotMainThread)
Thread.Sleep(5000);
}
}
使用BackgroundWorker组件进行异步操作编程
写了一篇文章对的魔进行讲解并分析了一下BackgroudWorker组件的实现,楼主细心看了后应该不会再有疑问,
http://blog.csdn.net/zhzuo/archive/2008/07/23/2699305.aspx如果楼主需要同时运行多个这样的任务,可以参考另外一篇
实现增强的异步任务执行组件
http://blog.csdn.net/zhzuo/archive/2008/07/23/2699847.aspx