別々のスレッドを必要とするWinFormsプログラムを作成しています。読みやすさと保守性のために、すべての非GUIコードを異なるクラスに分けています。このクラスはまた、いくつかの処理を行う別のクラスを「生成」します。ただし、別のクラスで開始されたスレッドからWinFormsコントロールを変更する(テキストボックスに文字列を追加する)必要があるという問題が発生しました。
私は周りを検索し、さまざまなスレッドとさまざまなクラスのソリューションを見つけましたが、両方ではなく、提供されたソリューションは(私には)互換性がないようです
ただし、これは最大の「リード」である可能性があります。別のクラスで実行されている別のスレッドからUIを更新する方法
クラス階層の例:
class WinForm : Form
{
...
Server serv = new Server();
}
// Server is in a different thread to winform
class Server
{
...
ClientConnection = new ClientConnection();
}
// Another new thread is created to run this class
class ClientConnection
{
//Want to modify winform from here
}
私はイベントハンドラーがおそらく行く方法であることを理解していますが、私はこの状況でそうする方法を理解することができません(私は他の提案にもオープンです;))
助けていただければ幸いです