Здравствуйте я работаю на vb10
Как известно работать с формой можно только в потоке где она была создана и поэтом, как сказано надо использовать метод invoke нужной формы для запуска делегатов в потоке формы. читал тут
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=RU-RU&k=k(EHINVALIDOPERATION.WINFORMS.ILLEGALCROSSTHREADCALL);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV3.5%22);k(DevLang-VB)&rd=true
Не могу понять этот код:
Private Sub setTextSafeBtn_Click( _
ByVal sender As Object, _
ByVal e As EventArgs) Handles setTextSafeBtn.Click
Me.demoThread = New Thread( _
New ThreadStart(AddressOf Me.ThreadProcSafe))
Me.demoThread.Start()
End Sub
Private Sub ThreadProcSafe()
Me.SetText("This text was set safely.")
End Sub
Private Sub SetText(ByVal [text] As String)
If Me.textBox1.InvokeRequired Then
Dim d As New
SetTextCallback(AddressOf SetText)
Me.Invoke(d, New Object() {[text]})
Else
Me.textBox1.Text = [text]
End If
End Sub
То что жирным от куда этот тип ведь он декларирован, но я так понимаю это делегат ?
И его нужно декларировать так:
public delegate sub SetTextCallback(Text as String)?
Но у меня это не сработало вот мой код
:
Public Delegate Sub D1()
Public Sub EventTimeRefresh()
If Form1.InvokeRequired Then
Dim d As New D1(AddressOf EventTimeRefresh)
Form1.Invoke(d)
Else
'дальше работа с формой
.........................
End If
End If
End Sub
Помогите пожалуйста