C# Winform项目中,无法在线程中调用展示另一个form窗体
C# Winform项目中,无法在线程中调用显示另一个form窗体
在C# Winform项目中,想实现在线程中调用显示另一个form窗体后,再过三秒后执行webBrowser1对应的url地址。
但是目前程序执行报错,提示"当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。"
代码如下,帮忙看看这么修改下。谢谢!
private void FrmAnalysis_Load(object sender, EventArgs e)
{
timer = new System.Threading.Timer(MyTimerCallback, null, 0, 1000);
}
void MyTimerCallback(object o)
{
TheadPackage();
}
void TheadPackage()
{
System.Threading.Thread thread = new System.Threading.Thread(
new System.Threading.ThreadStart(doWork));
thread.Start();
}
void doWork()
{
try
{
FrmProcess f = new FrmProcess(); //程序执行到此处,报上面的错误
f.Show();
System.Threading.Thread.Sleep(3000); //主要让程序显示FrmProcess窗体后停顿3s再继续执行webBrowser1对应的url
webBrowser1.Navigate("http://www.baidu.com");
}
catch (Exception ex)
{
MessageBox.Show("FrmAnalysis====" + ex.Message);
}
}
------解决思路----------------------

窗体控件,要用委托。
------解决思路----------------------
委托+1
------解决思路----------------------
线程中是不能调用窗体控件的。要用Invoke
------解决思路----------------------
跨线程更新UI
在C# Winform项目中,想实现在线程中调用显示另一个form窗体后,再过三秒后执行webBrowser1对应的url地址。
但是目前程序执行报错,提示"当前线程不在单线程单元中,因此无法实例化 ActiveX 控件“8856f961-340a-11d0-a96b-00c04fd705a2”。"
代码如下,帮忙看看这么修改下。谢谢!
private void FrmAnalysis_Load(object sender, EventArgs e)
{
timer = new System.Threading.Timer(MyTimerCallback, null, 0, 1000);
}
void MyTimerCallback(object o)
{
TheadPackage();
}
void TheadPackage()
{
System.Threading.Thread thread = new System.Threading.Thread(
new System.Threading.ThreadStart(doWork));
thread.Start();
}
void doWork()
{
try
{
FrmProcess f = new FrmProcess(); //程序执行到此处,报上面的错误
f.Show();
System.Threading.Thread.Sleep(3000); //主要让程序显示FrmProcess窗体后停顿3s再继续执行webBrowser1对应的url
webBrowser1.Navigate("http://www.baidu.com");
}
catch (Exception ex)
{
MessageBox.Show("FrmAnalysis====" + ex.Message);
}
}
------解决思路----------------------
窗体控件,要用委托。
------解决思路----------------------
委托+1
------解决思路----------------------
线程中是不能调用窗体控件的。要用Invoke
------解决思路----------------------
跨线程更新UI