今朝、同僚とWindowsフォームとThreadについて話していた。BackgroundWorkerについての話になり、当然のように別スレッドからWindowsフォームを操作するには気をつけなくちゃいけないという話題になり、どういうエラーが発生するんだっけ?ということになりシミュレートすることにしてみた。それで下のようなサンプルを書いた。Threadオブジェクトを使ってもっと簡単な例を書いてみたが、結局は結果は同じである・・・エラーが発生しない!


※解決のためコード省略


ど、どうしてだ?どうしてエラーが発生しないのだ?SP1がうまくハンドルしてくれているのか?以前やったときは確かにエラーが発生したのだが・・・今私の頭の中は???だらけである・・・


更新:SP1なしの環境でも実行してみましたが、やっぱりエラーは発生しません・・・


更新2:エラー発生に成功しました。以下のコードで。


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  For i As Integer = 0 To 10
    Dim t As New Thread(AddressOf Me.MyThreadSub)
    t.Start()
  Next
End Sub


Private Sub MyThreadSub()
  Dim t As New TextBox
  Me.Controls.Add(t)
End Sub

コメント書き込み