今朝、同僚と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
コメント書き込み