この問題に対する次の解決策が見つかりました
次のコードは、別のスレッドからの 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 を更新したいと考えています。ただし、オブジェクトを使用すると、次のようになります。
別のスレッドがこのオブジェクトを所有しているため、呼び出しスレッドはこのオブジェクトにアクセスできません。