2010-05-11 6 views
2

Je dois créer plusieurs threads quand un bouton est cliqué et je l'ai fait avec ceci:comment savoir quand un travail dans un thread est terminé?

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

mais je dois mettre à jour une zone d'image avec le fichier téléchargé, vous pouvez acheter si je mets un événement dans le function getFile et augmente le pour notifier que les fichiers ont été téléchargés, puis mettre à jour la zone d'image.

Répondre

7

Utilisez un AsyncResult, et vérifiez-le périodiquement pour l'achèvement, ou indiquez un délégué à appeler lorsque le thread a terminé son travail.

Un exemple complet dans VB can be found here.

1

Vous devez utiliser la méthode MethodInvoker.

Public Sub GetFile() 
    If Me.InvokeRequired Then 
     Me.Invoke(New MethodInvoker(GetFile)) 
    End If 
End Sub 

Vous pouvez désormais gérer n'importe quel événement de votre classe spécifiée.

1

Vous pouvez ACHIVE que l'utilisation du Asyncallback, ...

Dim sinctotal As New Del_sinc(AddressOf sincronizar) 

Dim ar As IAsyncResult = sinctotal.BeginInvoke(_funcion, type, New AsyncCallback(AddressOf SincEnd), cookieobj) 

Le cookieobj est ce

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 

Lorsque l'arrivée des délégués, il appellera le funcion Sincend (dans cet exemple), puis vous pourriez utiliser un événement pour mettre à jour votre image.

Espérons que cela aide!

Questions connexes