如何知道线程中的工作何时完成?

时间:2010-05-11 21:35:34

标签: vb.net multithreading

单击按钮时我需要创建多个线程,并且我已经完成了这个:

Dim myThread As New Threading.Thread(AddressOf getFile)
myThread.IsBackground = True
myThread.Start()

但我需要使用下载的文件更新图片框,如果我在函数getFile中设置了一个事件,请购买并提高它以通知文件已下载,然后更新图片框。

3 个答案:

答案 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(在此示例中),然后您可以使用事件来更新图片。

希望这有帮助!