Может кто-нибудь объяснить мне, как я могу создать окно WPF в потоке BackgroundWorker без ошибок?
У меня есть класс (Окно 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: Вызывающий поток должен быть STA, потому что это требуется для многих компонентов пользовательского интерфейса.
В чем дело? Спасибо за помощь и извините за мой плохой английский: (.