最終更新:2017-04-08 (土) 05:29:09 (2547d)
.NET Framework/マルチスレッド
Top / .NET Framework / マルチスレッド
Windowsフォームはシングルスレッドアパートメント(STA)モデルを使用しており、コントロールのメソッド(あるいはプロパティ)はそのコントロールを作成したスレッド(UIスレッド)からしか呼び出すことができません。
- つまり、スレッドセーフが保障されているメソッドを除き、コントロールのメソッドを別スレッドから直接呼び出してはいけません。
- Controlクラスでスレッドセーフが保障されているのは、Control.Invoke、Control.BeginInvoke、Control.EndInvoke?、Control.CreateGraphicsメソッドおよびControl.InvokeRequiredプロパティのみです。
メモ
- Invoke - 同期呼び出し?
- BeginInvoke - 非同期呼び出し