Iスレッドを使用して電子メールを送信します。 電子メールが予算の形で送信されたことをユーザーに知らせるために、ラベルにテキストを書き込む必要があります。別のクラスのスレッドからラベルフォームを変更する
'オプションは厳格ではありません。
クラスフォームの機能。
Public Sub ChangeLblText(ByVal msg As String) ' LblIconos.modifiers = public (In form)
lblIconos.Text = msg
End Sub
新しいスレッドの宣言クラス。 (グローバル宣言した。)
Public TasksPresu As New TasksClassPresu()
フォームの
アンアイコン "Presupuestos" 私はのInvoke metods、デリゲート機能やフォームのアドレスを試してみました
Public Class TasksClassPresu
Sub TaskEmail()
'trigger label change?
Presupuestos.ChangeLblText("Test")
end sub
End Class
Dim Thread1 As New System.Threading.Thread(AddressOf TasksPresu.TaskEmail)
Thread1.Start()
クラスTriggedスレッドスレッドをトリガ私は何かを残しているかもしれません。
私が使用した例のデリゲート:フォームPresupuestosクラスで
を:
Public Delegate Sub LabelDelegate(ByVal Msg As String)
グローバルモジュールでクラスフォーム上の変数
Public Llamada As Presupuestos.LabelDelegate
機能のほとんどを宣言します。
Public Sub ChangeLblText(ByVal msg As String) ' LblIconos.modifiers = public (In form)
lblIconos.Text = msg
End Sub
クラストリガー
Public Class TasksClassPresu
Sub TaskEmail()
Llamada.Invoke("prueba")
End Sub
End Class
これは、この行でエラーをmakeを実行すると:lbliconos.text = MSG エラー:「。スレッドによる不正な操作それはコントロールへのアクセス持っていた "から" lbliconosを作成されたもの以外のスレッド "