У меня есть приложение, где я использую фоновый рабочий, чтобы начать какую-то последовательность. Иногда нужно обновлять графический интерфейс.BackgroundWorker, update gui, static method
У меня есть статический класс со ссылками на некоторые объекты gui. В моей логике я хочу вызвать метод из этого статического класса, с некоторыми параметрами, проанализировать его и обновить графический интерфейс. Но у меня есть "Вызывающий поток не может получить доступ к этому объекту, потому что ему принадлежит другой поток." exception.
установка переменной в первой теме:
public static void SetCardHand(ref CardHand ch)
{
cardHand = ch;
}
метод вызывается из фона рабочего потока:
private static void SetCoveredCardsPlayer0(int cardsNumber)
{
if (cardsNumber < 1)
cardHand.imgCard1.Source = null;
else
cardHand.imgCard1.Source = (ImageSource)WindowManager.Instance.CardsGUI.CardsDictionary["T1"];
}
Как позволить этот GUI изменить метод?
Это не класс окон. Это что-то вроде ведущего.
Редакция2
Его карточная игра. Я начинаю работу в фоновом работнике, и мне нужно обновить исходный код изображения (представляющий карту) после каждого Сделки.
В зависимости от дизайна вашего приложения контур backgroundworker.WorkerReportsProgress = true и подписывается на ProgressChanged, который будет работать в потоке пользовательского интерфейса. – terrybozzio
Вы должны указать *, где * вы вызываете SetCoveredCardsPlayer0. Это должно быть либо из обработчиков событий Completed или ProgressChanged - если это не так, вы получите это исключение. Посмотрите, что Grant опубликовал для ответа ниже, если вы делаете этот вызов над чем-то другим, кроме обработчиков событий Completed или ProgressChanged. –