簡単な質問ですが、オフィスの誰も知らないようで、グーグルにこれを尋ねる良い方法が見つかりません. winforms で、イベント (この場合は focusLost) を処理する関数がある場合、その関数はイベントを発生させたスレッドと同じスレッドで発生しますか?
UIスレッドで現在実行されているフォーカスのあるテキストボックスがあり、フォーカスを変更すると、UIスレッドは私の関数を実行しますか?
はい、UI スレッドは UI イベント ハンドラを実行します。
一般に、Windows プログラミングでは、他のスレッドの UI コンポーネントに触れるべきではありません。Windows フォームは、単一のスレッドを介して動作するように設計されています。UI スレッドがフリーズする可能性のある重い作業が必要な場合は、新しいスレッドを生成して作業を行い、変更を UI スレッドにプッシュします。
SynchronizationContext.Currentを使用して、作業を UI スレッドに投稿できます。これにもBackgroundWorkerが便利です。
それは正しいと思います。通常、イベントは GUI スレッドで処理されます。別のスレッドでこれを行う方法については、以下のリンクを参照してください。
http://bytes.com/topic/c-sharp/answers/526484-handling-control-ui-events-worker-threads