SynchronizationContext は、コードが実行される場所を表します。 Send メソッドまたは Post メソッドに渡されたデリゲートは、その場所内で呼び出されます。各スレッドには、関連付けられた SynchronizationContext インスタンスを持つことができます。
Windows フォームは、最初のフォームが作成されるスレッドに WindowsFormsSynchronizationContext をインストールします。このコンテキストは同じスレッドでデリゲートを呼び出し、UI 要素がそれらを作成したスレッドでのみ操作されるようにします。
提供された例では:
If myTextBox.Text = text;スレッド プール デリゲート内で直接実行された場合、Windows フォームは、別のスレッドから myTextBox にアクセスできないことを示す例外をスローします。
同期コンテキストは、コードを実行する場所を決定しません。フレームワークのルールに基づいて適切な実行場所を決定するのはプログラマの責任です (たとえば、Windows フォーム コントロールは作成スレッドで操作する必要があります)。 .NET 4.5 の場合は、スレッド管理を簡素化するために async/await と Task の使用を検討してください。
以上がSynchronizationContext は UI 更新時にスレッドの安全性をどのように確保しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。