Я знаю, что об этом спрашивали годы назад, но надеюсь, что это поможет другим в будущем.Если вы не хотите беспокоиться о работе в фоновом режиме или прокачке сообщений, простой обходной путь - просто обновить что-то в пользовательском интерфейсе.Например, у меня есть инструмент, который я использую только, поэтому мне все равно, использует ли он поток пользовательского интерфейса.Поэтому я просто обновляю textbox.text в пользовательском интерфейсе до того, над чем я работаю.Вот фрагмент кода.Это очень хакерский и, вероятно, неправильный способ сделать это профессионально, но он работает.
for (int i = 0; i < txtbxURL.LineCount; i++)
{
mytest.NavigateTo(mytest.strURL);
mytest.SetupWebDoc(mytest.strURL);
strOutput = mytest.PullOutPutText(mytest.strURL);
strOutput = mytest.Tests(strOutput);
mytest.CheckAlt(mytest.strURL);
mytest.WriteError(txtbxWriteFile.Text);
txtblCurrentURL.Text = mytest.strURL;
//This ^^^ is what is being updated, which keeps the thread from throwing the exception noted above.
}