【发布时间】:2010-09-02 02:54:11
【问题描述】:
谁能解释一下,我怎样才能在 BackgroundWorker 线程中创建 WPF 窗口而不会出错?
我有一些课程(WPF 窗口):
public partial class Captcha : Window
{
public Captcha()
{
InitializeComponent();
}
private void SendCaptchaBtn_Click(object sender, RoutedEventArgs e)
{
DialogResult = true;
this.Close();
}
}
在后台工作人员的 DoWork 函数中,我尝试使用此窗口创建一个对象:
BackgroundWorker bgWorker = new BackgroundWorker();
bgWorker.DoWork += new DoWorkEventHandler(bgWorker_DoWork);
bgWorker.RunWorkerAsync();
void bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
parser = new Parser();
parser.ParseFunc(tempKeywords);
}
Parser 对象有一个“Captcha”窗口:
Captcha captcha_dlg = new Captcha();
当我运行程序时,Captcha-class点的构造函数出现运行时错误:调用线程必须是STA,因为许多UI组件都需要这个。 怎么了?谢谢你的帮助,对不起我的英语不好:(。
【问题讨论】:
标签: wpf backgroundworker