1

スレッドを使用してメールを送信します。メールが予算の形で送信されたときにユーザーに知らせるために、ラベルにテキストを書き込む必要があります。

' Option Strict はオフです

クラスフォームの関数。

Public Sub ChangeLblText(ByVal msg As String) ' LblIconos.modifiers = public (In form)
     lblIconos.Text = msg
End Sub

新しいスレッドの宣言されたクラス。(グローバル宣言)

Public TasksPresu As New TasksClassPresu()

フォーム「Presupuestos」のアイコンがスレッドをトリガーします

    Dim Thread1 As New System.Threading.Thread(AddressOf TasksPresu.TaskEmail)
    Thread1.Start()

クラス トリガーされたスレッド

Public Class TasksClassPresu
    Sub TaskEmail()
    'trigger label change?
     Presupuestos.ChangeLblText("Test")
    end sub
End Class

Invoke メソッド、デリゲート関数、フォームのアドレスを作業なしで試してみましたが、何かを残したのかもしれません。

私が使用したデリゲートの例:


Form 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

これを実行すると、次の行でエラーが発生します。

4

1 に答える 1

0

詳細はわかりませんが、チェックインして、true の場合はデリゲート自体を呼び出す必要がlblIconos.InvokeRequiredありChangeLblTextますInvoke

この質問、および他の多くの質問は、より詳細な情報を提供します。

于 2012-05-02T06:50:09.340 に答える