このメソッドを含む UI を管理するクラスがあります。
public void SetField(int field, int value)
私は宣言されたデリゲートを持っています:
public delegate void SetFieldDelegate(int field, int value);
ボタン押下イベントでは、バックグラウンド スレッドで、計算コストの高い別のクラスのメソッドを呼び出します。UI はフリーズせず、作業は完了しています。ときどき、UI を更新したいことがありますが、これにはデリゲートを使用してクロススレッド操作を回避しようとしました。
Gui.SetFieldDelegate TestDelegate = new Gui.SetFieldDelegate(gui.SetField);
重い作業メソッドでは、次のように呼び出します。
TestDelegate.Invoke(field, value);
しかし、それでも無効なクロススレッド操作です。些細なことだと思いますが、迷っています。また、これを行うためのはるかに簡単な方法があれば、どんな提案も歓迎します。