我有應用程序在哪裏我使用後臺工作來開始一些序列。 有時需要更新GUI。BackgroundWorker,更新GUI,靜態方法
我有一些靜態類引用一些gui對象。 在我的邏輯中,我想從這個靜態類中調用方法,並帶有一些參數,然後分析它並更新GUI。 但我有「調用線程不能訪問此對象,因爲不同的線程擁有它。」異常。
設置變量在第一線:
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?
編輯
這不是一個窗口類。它像主持人一樣。
edit2
它是一款紙牌遊戲。我開始在後臺工作,我需要在每次交易後更新圖片來源(代表卡片)。
根據您的應用程序設計,大綱爲backgroundworker.WorkerReportsProgress = true,並訂閱將在UI線程上運行的ProgressChanged。 – terrybozzio
您必須詳細說明*您在哪裏調用SetCoveredCardsPlayer0。它應該來自Completed或ProgressChanged事件處理程序 - 如果不是,您會得到該異常。如果你在除Completed或ProgressChanged事件處理程序之外的其他地方進行調用,請參閱Grant在下面發佈的答案 –