0

この問題に対する次の解決策が見つかりました

次のコードは、別のスレッドからの GUI 要素の更新の問題を解決するのに役立つ場合があります

モジュールレベル

delegate void updateCallback(string tekst);

これは要素を更新する方法です:

private void UpdateElement(string tekst)
{
    if (element.Dispatcher.CheckAccess() == false)
    {
    updateCallback uCallBack = new updateCallback(UpdateElement);
    this.Dispatcher.Invoke(uCallBack, tekst);
    }
    else
    { 
    //update your element here
    }
 }

これは、String Int のようなプリミティブ型で問題なく機能していますが、クラスのインスタンスを使用したいと考えています。

デリゲート宣言は次の例のようになります。

delegate void updateCallback(Maps newMap)

これを使用して、別のスレッドで作成された Window を更新したいと考えています。ただし、オブジェクトを使用すると、次のようになります。

別のスレッドがこのオブジェクトを所有しているため、呼び出しスレッドはこのオブジェクトにアクセスできません。

4

0 に答える 0