Прежде всего, прошу прощения, если мой английский плохой, я не являюсь носителем английского языка.Изменение свойства элемента управления через делегата
Я довольно новичок в программировании, и я пытаюсь научить себя VB.NET Я столкнулся с проблемой, пытаясь узнать о делегатах. (см. код ниже)
То, что я пытаюсь выполнить, - это обновить указанное свойство текста элемента управления через поток. Однако, как только я начинаю поток, я получаю ошибку ArgumentException. Я совершенно не знаю, что случилось. У кого-нибудь есть идея, что я сделал здесь неправильно?
Public Class Form1
Delegate Sub myDelegate1(ByVal s_Name As Control, ByVal s_txt As String)
Public txtUpdate As New myDelegate1(AddressOf upd_ControlTextProperty)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Label1.Text = vbnullstring
End Sub
Private Sub upd_ControlTextProperty(ByVal ControlName As Control, ByVal txt As String)
ControlName.Text = txt
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim thread1 As New Threading.Thread(AddressOf threadstart)
thread1.IsBackground = True
thread1.Start()
End Sub
Private Sub threadstart()
Me.Invoke(Me.txtUpdate, New Object(), {Label1, "This is Label 1"})
End Sub
End Class
можно передать 3 аргумента, но обратный вызов ожидает только 2. – TheValyreanGroup
hhmmm..This меня смущает, пример из MSDN [ссылка] (https://msdn.microsoft.com/en-us /library/a1hetckb(v=vs.110).aspx) также принимает 3 аргумента, но обратный вызов ожидает только 1. – printf