Возможно, вы наткнулись на некоторые методы или свойства, которые не проверяют контекст и выдают исключение.Это не значит, что это хорошая идея.На самом деле, я бы избежал этого любой ценой.
Обновление: Предполагается, что здесь есть WinForms.Если вы думаете, что это слишком громоздко для вызова, используйте метод расширения:
public static class ControlExtensions
{
public static void Do(this Control c, Action f)
{
if (c.InvokeRequired)
{
c.Invoke(f);
}
else
{
f();
}
}
}
Затем в DoWork в BackgroundWorker:
// Background work here
this.Do(() =>
{
// This runs on UI thread
});
Я считаю, что это намного проще в использовании, чем BackgroundWorkersReportProgress.