Пользовательский интерфейс WPF можно обновить из фонового потока с помощью Dispatcher.BeginInvoke.
Например, если ваш фоновый код был частью окна, вы можете обновить TextBlock:
this.Dispatcher.BeginInvoke((Action)(() =>
{
textBlock.Text = "Connection Failed!";
}));
Редактировать:
Если ваш фоновый код был в классе, отличном от вашего Window, вы могли бы сделать интерфейс, чтобы помочь:
public interface IShowStatus
{
void ShowStatus(string message);
}
Реализация интерфейса в вашем Window
public void ShowStatus(string message)
{
this.Dispatcher.BeginInvoke((Action)(() =>
{
textBlock.Text = message;
}));
}
В вашем классе с фоновым рабочим создайте свойство для хранения ссылки на интерфейс.
public IShowStatus StatusDisplay { get; set; }
В вашем классе Window инициализируйте класс фона.
public void InitBackground()
{
BackgroundClass background = new BackgroundClass();
background.StatusDisplay = this;
...
Наконецв вашей фоновой ветке вы можете сказать:
StatusDisplay.ShowStatus("Connection Failed!");