Amigo si hago esto por que me marca error: Llamar a una subrutina en el evento de DoWork del backgroundworker Private Sub Backgroundworker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles backgroundworker.DoWork Call Cargar_Articulos(dgvarticulos, "productos") End Sub
A que se debera amigo, o como hago para que esa funcion se ejecute en segundo plano, de antemano gracias amigo.
Hola: Para responderte debidamente deberia ver tu aplicacion. ¿Puedes envirme un link para poder verla?. Lo que si puedo hacer es una aplicacion que ejecute subrutinas dentro de una hebra o un backgroundworker. ¿Te ayudaria eso?. Saludos.
Claro amigo, mira te explico un poco mejor el codigo.. Tengo una subrutina llamada Cargar_Articulos(ByVal dgvartivulos As DataGriedView, ByVal tabla As string)
La subrutina pasa como parametros un datagriedview, y una cadena de texto que es el nombre de una tabla.
Mi aplicacion tiene un boton para cargar los registros en el data griedview, para eso llama a la subrutina Cargar_Articulos() pero el problema esta que cuando los carga la ventana aparece con un (No Responde)... Y después de poco termina de cargar los registros.
Lo que queria hacer era llamar una subrutina en el evento DoWork de una BackGroundWorker, para que haga el proceso en segundo plano y no se detenga la aplicación.
Lo intente pero no me funcionaba amigo, me gustaría que hicieras eso de ejecutar subrutinas dentro de una hebra en caso de que no me comprendas mucho mi problema, me conformo si me mandas un ejemplo de como ejecutar las subrutinas en una función amigo, de preferencia si tienes tiempo y puedes que las subrutinas pasen parámetros para guiarme un poco con mi problema.
De ante mano muchas gracias, Excelentes aportes (Y).
Hola: Estoy pasando unos dias fuera de casa. Intentare hacer una pequeña aplicacion demostrativa a la mayor brevedad posible. Te aviso cuando este lista. Saludos.
Hola: Tal como te comente lo ideal seria poder disponer de tu aplicacion para hacer pruebas. Te envio este codigo por si te sirve:
Imports System.Threading Public Class Form1 Dim HEBRA As Thread
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click CheckForIllegalCrossThreadCalls = False HEBRA = New Thread(AddressOf RELLENAR) HEBRA.Start() End Sub
Public Sub RELLENAR() Dim MIFINAL As Integer = 1000 For I = 0 To MIFINAL MIRANDOM(I, MIFINAL) TextBox1.Text += I & vbCrLf Next End Sub
Public Sub MIRANDOM(ByVal INICIO As Integer, ByVal FINAL As Integer) Dim generator As New Random Dim randomValue As Integer randomValue = generator.Next(INICIO, FINAL) Label1.Text = randomValue End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click If Button3.BackColor = Color.Black Then Button3.BackColor = Color.Red Else Button3.BackColor = Color.Black End If End Sub
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing Try HEBRA.Abort() 'PARA QUE CIERRE LA HEBRA SI ESTA ABIERTA Catch ex As Exception
End Try End Sub End Class
Lo que hace es poner numeros del 1 al 1000 en un textbox mientras que a traves de una subrutina calcula un numero aleatorio y lo pone en una etiqueta. Y permite que durante la ejecucion de lo anterior se pueda pulsar un boton que pasara de negro a rojo y viceversa al ser pulsado. Si no te sirve o necesitas alguna aclarion dejame un nuevo comentario. Saludos.
Buenisimo tu tutorial...te felicito
ResponderEliminarHola: Muchas gracias. Comentarios como el tuyo animan a seguir haciendo cosas. Saludos.
EliminarEste video me encanta. Muchas Gracias por compartir
ResponderEliminarHola: Muchas gracias. Saludos.
EliminarMuy bueno, puedes compartir el codigo?
EliminarMuchas gracias!
ResponderEliminarAmigo si hago esto por que me marca error:
ResponderEliminarLlamar a una subrutina en el evento de DoWork del backgroundworker
Private Sub Backgroundworker_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles backgroundworker.DoWork
Call Cargar_Articulos(dgvarticulos, "productos")
End Sub
A que se debera amigo, o como hago para que esa funcion se ejecute en segundo plano, de antemano gracias amigo.
Hola: Para responderte debidamente deberia ver tu aplicacion. ¿Puedes envirme un link para poder verla?. Lo que si puedo hacer es una aplicacion que ejecute subrutinas dentro de una hebra o un backgroundworker. ¿Te ayudaria eso?. Saludos.
EliminarClaro amigo, mira te explico un poco mejor el codigo..
EliminarTengo una subrutina llamada Cargar_Articulos(ByVal dgvartivulos As DataGriedView, ByVal tabla As string)
La subrutina pasa como parametros un datagriedview, y una cadena de texto que es el nombre de una tabla.
Mi aplicacion tiene un boton para cargar los registros en el data griedview, para eso llama a la subrutina Cargar_Articulos() pero el problema esta que cuando los carga la ventana aparece con un (No Responde)...
Y después de poco termina de cargar los registros.
Lo que queria hacer era llamar una subrutina en el evento DoWork de una BackGroundWorker, para que haga el proceso en segundo plano y no se detenga la aplicación.
Lo intente pero no me funcionaba amigo, me gustaría que hicieras eso de ejecutar subrutinas dentro de una hebra en caso de que no me comprendas mucho mi problema, me conformo si me mandas un ejemplo de como ejecutar las subrutinas en una función amigo, de preferencia si tienes tiempo y puedes que las subrutinas pasen parámetros para guiarme un poco con mi problema.
De ante mano muchas gracias, Excelentes aportes (Y).
Hola:
EliminarEstoy pasando unos dias fuera de casa. Intentare hacer una pequeña aplicacion demostrativa a la mayor brevedad posible.
Te aviso cuando este lista.
Saludos.
Hola:
EliminarTal como te comente lo ideal seria poder disponer de tu aplicacion para hacer pruebas.
Te envio este codigo por si te sirve:
Imports System.Threading
Public Class Form1
Dim HEBRA As Thread
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
CheckForIllegalCrossThreadCalls = False
HEBRA = New Thread(AddressOf RELLENAR)
HEBRA.Start()
End Sub
Public Sub RELLENAR()
Dim MIFINAL As Integer = 1000
For I = 0 To MIFINAL
MIRANDOM(I, MIFINAL)
TextBox1.Text += I & vbCrLf
Next
End Sub
Public Sub MIRANDOM(ByVal INICIO As Integer, ByVal FINAL As Integer)
Dim generator As New Random
Dim randomValue As Integer
randomValue = generator.Next(INICIO, FINAL)
Label1.Text = randomValue
End Sub
Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
If Button3.BackColor = Color.Black Then
Button3.BackColor = Color.Red
Else
Button3.BackColor = Color.Black
End If
End Sub
Private Sub Form1_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Try
HEBRA.Abort() 'PARA QUE CIERRE LA HEBRA SI ESTA ABIERTA
Catch ex As Exception
End Try
End Sub
End Class
Lo que hace es poner numeros del 1 al 1000 en un textbox mientras que a traves de una subrutina calcula un numero aleatorio y lo pone en una etiqueta.
Y permite que durante la ejecucion de lo anterior se pueda pulsar un boton que pasara de negro a rojo y viceversa al ser pulsado.
Si no te sirve o necesitas alguna aclarion dejame un nuevo comentario.
Saludos.
Muchisimas gracias! me fue de mucha utilidad!!
ResponderEliminarHola:
EliminarMe alegra saber que te ha sido útil.
Saludos.
Excelente aporte.
ResponderEliminarGracias
Gracias. Saludos.
EliminarEs mucho lo que tengo que agradecer, necesitaba esta solución. Saludos.
ResponderEliminarHola:
EliminarMe alegra saber que te ha sido útil. Saludos.
Buen ejemplo
ResponderEliminarHola ,tengo que hacer una aplicación que tenga hilos,podrias ayudarme?
ResponderEliminar