Auxilio Theads

10/08/2006 - 23:58 por Eduardo | Informe spam
Saludos Amigos.

Migre una Tabla de Pacientes de un dbf a una tabla de SQL Server 2005,
esta tabla tiene 121800 registros,

El select que utilizo en mi Stor es:
SELECT [coddepen]
,[codparen]
,[codpac]
,[codtipopac]
,[apaterno]
,[amaterno]
,[nombre]
FROM [DB_CLIMACH].[dbo].[paciente2]

en una palicacion en Fox el llenado de
su grilla la hacia rapidamente, pero cuando utilizo
un dataset para poder utilizar el RowFilter para
buscar por apellidos se demora poco mas de 15 segundos
donde la aplicacion se queda quieto, intente hacer la
carga de datos y el llenado de la grilla en otro Hilo,
de la siguiente manera.

***en la clase ClsPaciente tengo este Metodo, jo que utilizo DAAB
***para conectarme.

Public Sub GrillaPaciente() As DataSet
Dim dsPacientes As New DataSet
dsPacientes =
vMyBaseDatos.ExecuteDataSet(CommandType.StoredProcedure,
"Marketing.USP_CARGA_PACIENTES")
Return dsPacientes
End Function

***En la Clase del Formulario.
Private Sub llena()
Dim MyClass As New ClsPaciente
Me.dgvPacientes.DataSource =
MyClass.GrillaPaciente.Tables(0).DefaultView
End Sub

***En el Load del Formulario Hago lo siguiente:
Dim b As New Thread(AddressOf llena)
b.Priority = ThreadPriority.BelowNormal
b.Start()

Y me sale la siguiente Exepcion:

"Cross thread operations not valid control dgvpacientes, form a thread other
than the thead if was created on "

Para resumir, lo que quisiera es hacer que mi grilla se cargue
con la data y el formulario no se quede como colgado cuanto dure
la carga de datos. Y si con esos 121800 registros podria aplicar
un rowfilter tambien en otro hilo, y si esa no es la manera optima
como podria hacerlo, descartando que la busqueda se haga ingresando
el nombre y luego traer la data, pues porque de esa manera los
usuarios no lo quieren. Ayudenme
 

Leer las respuestas

#1 Richad
15/08/2006 - 01:23 | Informe spam
Gracias por contestar Eduardo.

La verdad que ya estoy muy cabezon con esto, probare con lo que me indicas.
De todas maneras te hare saber como me fue ok. :-)


"Eduardo Alvarado Meza" escribió:

El error es correcto, pero me parece que deberias usar el BackgroundWorker y
verifica si te lo lanza. Eso es todo lo que te puedo aportar por el momento
para que tu pregunta no quede al aire. Suerte



Preguntas similares