Pasar uno o más parámetros a un thread
Artículo por Club Developers · 11 mayo 2006
2415 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


