Pasar uno o más parámetros a un thread
Artículo por Club Developers · 11 mayo 2006
1975 vistas
El delegado System.Threading.ThreadStart usado por las funciones de thread no tiene ningún parámetro. Para pasar parámetros a un thread tendremos que crear una clase nueva que contenga los parámetros y el método del thread.
vbnet
Imports System.Threading Public Class ThreadsForm   Inherits System.Windows.Forms.Form   ' ........   Private _threadCalculs1 As Thread   Private _endThreadCalculsEvent As New ManualResetEvent(False)   ' Clase ThreadCalculs   Private Class ThreadCalculs     ' form parent     Private _frm As ThreadsForm     ' temporizador     Private _tempo As Integer     ' Constructor. frm y tempo son parámetros del Thread     Public Sub New(ByVal frm As ThreadsForm, ByVal tempo As Integer)       _frm = frm       _tempo = tempo     End Sub     ' función del Thread     Public Sub ThrFunc()       Try         _frm.Calculs(_tempo)       Catch ex As Exception         Debug.WriteLine(ex.ToString())       End Try     End Sub   End Class   ' cálculos   Private Sub Calculs(ByVal tempo As Integer)     While Not _endThreadCalculsEvent.WaitOne(tempo, False)       ' aquà hacemos los cálculos.....     End While   End Sub   ' arrancamos thread   Private Sub StartThread()     Dim myThreadObj As New ThreadCalculs(Me, 1000)     _threadCalculs1 = New Thread(AddressOf myThreadObj.ThrFunc)     _threadCalculs1.Name = "Thread1"     _threadCalculs1.Start()   End Sub