Sencillo ejemplo de threads en VB.NET
En este ejemplo veremos cómo crear un thread en vb.net en el que ejecutaremos una función en modo background mientras seguimos con la ejecución principal del programa.
Primero hay que importar la librería System.Threading (antes de iniciar la clase).
Imports System.Threading
Dentro de la clase definimos los atributos que contendrán el Thread y la función que invocará.
Dim nuestroThread As ThreadDim nuestroThreadStart As New ThreadStart(AddressOf ActualizacionesBackground)Dim CallFuncionGenerar As New MethodInvoker(AddressOf Me.FuncionGenerar)
Dentro de Form_Load (la función que se llama al cargar la aplicación) podemos asignar el thread en modo background para que no interfiera con el curso principal del programa, e iniciarlo con el método Start.
nuestroThread = New Thread(nuestroThreadStart)nuestroThread.IsBackground = TruenuestroThread.Name = "nuestroThread"nuestroThread.Start()
Al iniciar, el thread llamará a una función llamada ActualizacionesBackground creada por nosotros mismos, en dónde, por ejemplo, se puede escribir un bucle que espere cada X tiempo a llamar la función que queramos.
While True Me.BeginInvoke(CallFuncionGenerar) Thread.Sleep(15000)End While
Imports System.ThreadingPublic Class Form1 Dim nuestroThread As Thread Dim nuestroThreadStart As New ThreadStart(AddressOf ActualizacionesBackground) Dim CallFuncionGenerar As New MethodInvoker(AddressOf Me.FuncionGenerar) Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Try nuestroThread = New Thread(nuestroThreadStart) nuestroThread.IsBackground = True nuestroThread.Name = "nuestroThread" nuestroThread.Start() Catch ex As Exception End Try End Sub
Public Sub FuncionGenerar() Me.Active_guestsTableAdapter.Fill(Me.FontreactorDataSet.active_guests) End Sub
Public Sub ActualizacionesBackground() While True Me.BeginInvoke(CallFuncionGenerar) Thread.Sleep(15000) End While End Sub
End Class
El ejemplo es muy básico. Pero sirve para entender el comportamiento de los threads en vb.net.