基本的な事がわかっておらず申し訳ありませんが、スレッド外からのWindowsフォームコントロール呼び出しについてどなたかご教授下さい。
VB.NETのMSDNに
「Invoke メソッドを使用せずにコントロールを作成したスレッド以外のスレッドからコントロールを呼び出すのは安全ではありません。」
という記載があります。これはフォームに対しても同様だと思いますが、UI動作に関係のないフォームのプロパティなどの呼び出し(読込みと書込み)に対しても、安全ではないと考えるべきでしょうか。
例えば以下の例において、Form1に定義したParam1プロパティをInvokeメソッドを使用せず別スレッドから呼び出すのはあまりよろしくはないのでしょうか。
Public Class Form1 'Param1プロパティの定義 Private _param1 As String Public Property Param1() As String Get Return _param1 End Get Set(ByVal value As String) _param1 = value End Get End Property End Sub Public Class Form2 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim myThread As New Threading.Thread(AddressOf myThread_Start) myThread.Start() End Sub Private Sub myThread_Start() For Each myForm As Form In Application.OpenForms If myForm.Name = "Form1" Then '別スレッドからForm1のParam1プロパティにアクセスする CType(myForm, Form1).Param1 = "Value1" Exit For End If Next End Sub End Sub
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/15 23:42