Foros del Web » Programación para mayores de 30 ;) » .NET »

Problema con Hebras.

Estas en el tema de Problema con Hebras. en el foro de .NET en Foros del Web. Hola buenas noches !!! Verán, tengo el siguiente problema: Resulta que tengo un procedimiento, ¿No? sub CargarCombo(ByVal parTabla as String) .............. .............. .............. End sub ...
  #1 (permalink)  
Antiguo 09/01/2005, 17:34
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Problema con Hebras.

Hola buenas noches !!!

Verán, tengo el siguiente problema:

Resulta que tengo un procedimiento, ¿No?

sub CargarCombo(ByVal parTabla as String)
..............
..............
..............
End sub

Bueno, pues a la hora de lanzar ese método con una hebra el VS no me deja, me lo marca con el típico subrayado en azul diciendome que está mal.

Este error me lo da por que llamo a un procedimiento con parámetros. Sin embargo, si el procedimiento al que llamo con la hebra no lleva parámentros no me da error.

¿Alguien sabe como podría solucionarlo?

Desde ya, muchas gracias. Saludos.

P.D.: Si no me he explicado bien, diganmelo que les pego el código.
__________________
Charlie.
  #2 (permalink)  
Antiguo 10/01/2005, 02:20
Avatar de ORendon  
Fecha de Ingreso: diciembre-2004
Ubicación: Med-Colombia
Mensajes: 46
Antigüedad: 19 años, 4 meses
Puntos: 0
Bueno en cuanto al procedimiento, no influye para nada que tenga o no tenga parametros, postea algo de codigo para detectar mas facil el error.
Y que es eso de la hebra ?

Ay te ves
  #3 (permalink)  
Antiguo 11/01/2005, 14:46
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Dim i As Integer = 0
Dim Hebra As Thread
Private Sub BtnLlenar_Click(.....) Handles BtnLlenar.Click
If ChkHebra.CheckState = CheckState.Checked Then
'NO FUNCIONA
'Hebra = New Thread(AddressOf LlenarComboHebra(10000))
Hebra = New Thread(AddressOf LlenarComboHebra)
Hebra.Start()
Else
LlenaCombo(100000)
End If
End Sub


Sub LlenarComboHebra()
CmbCombo.Items.Clear()
For i = 0 To 100000
CmbCombo.Items.Add("Elemento " & i)
Next
End Sub


Sub LlenaCombo(ByVal Numero As Integer)
CmbCombo.Items.Clear()
For i = 0 To Numero
CmbCombo.Items.Add("Elemento " & i)
Next
End Sub

¿Alguien Sabe como solucionar el problema y que las Hebras si acepten parámetros para los métodos?
__________________
Charlie.
  #4 (permalink)  
Antiguo 11/01/2005, 16:24
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
Porque no haces algo como ésto:

Cita:
Sub CargarCombo(Optional ByVal Numero As Integer = 1)

End Sub
Y le asignas un valor por default a Numero y con ello podrá o nó recibir parámetros.

Salu2
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #5 (permalink)  
Antiguo 12/01/2005, 02:24
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Claro, eso también lo pensé, pero lo que quería era usar solo un método, el del Parámetro, pero con Hebras, naturalmente.

Lo que haré será declarar una variable pública y modificarla antes de llamar al método, aun que me gustaba más la idea de usar parámetros en la Hebra.

De todas formas gracias.
__________________
Charlie.

Última edición por chcma; 12/01/2005 a las 02:29
  #6 (permalink)  
Antiguo 12/01/2005, 07:08
 
Fecha de Ingreso: enero-2005
Ubicación: Burela (Lugo)
Mensajes: 15
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola chcma,

No puedo decirte muy bien como se hace en VB (lo mío es el C#), pero sí porque no te acepta parámetros.

Cuando creas un nuevo hilo, realmente no llamas al procedimiento, sino a un delegado. Es el delegado el que se encarga de ejecutar el procedimiento.

Salu2.
  #7 (permalink)  
Antiguo 12/01/2005, 07:34
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Ahá, mmm, me podrías explicar un poco mejor este comentario? XD
__________________
Charlie.
  #8 (permalink)  
Antiguo 14/01/2005, 02:26
 
Fecha de Ingreso: enero-2005
Ubicación: Burela (Lugo)
Mensajes: 15
Antigüedad: 19 años, 3 meses
Puntos: 0
Ya he puesto un ejemplo para explicar el tema de hebras en este post http://desaweb.forosdelweb.com/showthread.php?t=261488

Si te interesa dime tu dirección de correo y te lo paso, lo único que está en C#.

Salu2.
  #9 (permalink)  
Antiguo 15/01/2005, 09:49
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
Bueno, pues si me lo mandas te estaré muy agradecido, asi lo estudio un poco:

carlos arroba dualidea.com

Gracias.
__________________
Charlie.
  #10 (permalink)  
Antiguo 16/01/2005, 00:50
Avatar de Atonovich  
Fecha de Ingreso: diciembre-2002
Ubicación: ...
Mensajes: 117
Antigüedad: 21 años, 4 meses
Puntos: 0
Hebras, hebras y más hebras... la ayuda de .NET dice que no se pueden especificar mètodos que reciban parámetros en el constructor de la hebra, si el procedimiento requiere mayor informaciòn se debe realizar lo siguiente:
1) Usar clases que provean métodos para realizar las acciones deseadas.
2) Usar propiedades públicas o variables para suplir los datos locales

Ejemplo clásico de libro:
Class Calculate
Public iValue as integer
Public Event Complete(ByVal Result as integer)

Public Sub LongCalculation()
' Este procedimiento realiza acciones muy robustas basádas en el valor de iValue
RaiseEvent Complete(iResult) '<--- Levanta un evento para avisar que ha terminado
End sub
End class

Sub test()
Dim calc as new Calculate()
Dim th as New threading.Thread(AddressOf calc.LongCalculation)
calc.iValue= 10

'ligar el evento al procedimiento con parámetros ;)
AddHandler calc.Complete, AddressOf CalcResult
end sub

Sub CalcResult(ByVal Result as integer)
...
end sub


Espero te sirva
Saludos
__________________
" El hombre es una invención de Dios o Dios es una invención del hombre..."
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:17.