单击按钮时我需要创建多个线程,并且我已经完成了这个:
Dim myThread As New Threading.Thread(AddressOf getFile)
myThread.IsBackground = True
myThread.Start()
但我需要使用下载的文件更新图片框,如果我在函数getFile中设置了一个事件,请购买并提高它以通知文件已下载,然后更新图片框。
答案 0 :(得分:7)
使用AsyncResult,并定期检查它是否完成,或者在线程完成其工作时提供要调用的委托。
VB can be found here中的完整示例。
答案 1 :(得分:1)
您需要使用MethodInvoker委托。
Public Sub GetFile()
If Me.InvokeRequired Then
Me.Invoke(New MethodInvoker(GetFile))
End If
End Sub
现在您可以处理指定类中的任何事件。
答案 2 :(得分:1)
您可以使用Asyncallback,...
来实现Dim sinctotal As New Del_sinc(AddressOf sincronizar)
Dim ar As IAsyncResult = sinctotal.BeginInvoke(_funcion, type, New AsyncCallback(AddressOf SincEnd), cookieobj)
cookieobj就是这个
Class Cookie
Public id As String
Public AsyncDelegate As [Delegate]
Sub New(ByVal id As String, ByVal asyncDelegate As [Delegate])
Me.id = id
Me.AsyncDelegate = asyncDelegate
End Sub
End Class
当委托完成后,它将调用函数Sincend(在此示例中),然后您可以使用事件来更新图片。
希望这有帮助!