C# でサーバーを作成しようとしていますが、スレッドの委任と通信に関する基本的な質問があります。
using System.Windows.Forms;
// main thread..
callbackform = new Form();
callbackform.createControl();
int dummy = callbackform.Handle.ToInt32();
// here I create a new thread to connect to a server and handle messages from server
// main thread loops indefinitely
Application.run(new ApplicationContext());
現在、フォームは ISynchronizeInvoke インターフェイスを実装しています。メイン STA スレッドでメソッドを同期的または非同期的に実行したい場合、callbackform.InvokeRequired/BeginInvoke/EndInvoke/Invoke(...) 関数を使用できますか?
フォーム/コントロール/ハンドル オブジェクトは新しいスレッドを作成しますか? その場合、それらが管理するスレッドはメイン スレッドと同じではなく、フォームに委任したアクションは実際にはメイン STA スレッドで実行されませんか?
これは正しい理解ですか、それともここで基本的な何かが欠けていますか? C# を使用して非 GUI サーバーを作成し始めています。