Visual Basic - Parametros a una funcion en segundo plano

Life is soft - evento anual de software empresarial
   
Vista:

Parametros a una funcion en segundo plano

Publicado por Xbi (2 intervenciones) el 05/11/2009 10:33:25
Hola, tengo desarrollada una pequeña aplicación para importar los datos de un fichero xml a una base de datos MS Access. Funciona correctamente pero cuando esta realizando la función importarXml(MyFileStream,MyRutaBD) parece que no responde aunque en realidad si que esta funcionando.

Bien, para solucionar esto estoy intentando usar un control backgroundworker para ejecutar en segundo plano esa funcion.

Mi problema es que no se ahora como hacer llegar a esa funcion los parametros que requiere usando el control backgroundworker

Mi codigo (resumido)

Public Class Form
Private Sub CmdImportar(........)

'Obtengo el stream con del fichero origen de donde quiero importar los datos
'con un OpenDialog

'lo mismo para obtener la ruta de destino con un SaveDialog
'y ahora arranco la ejecucion en segundo plano

'LLAMADA A INICIALIZACION DEL PROCESO
backgroundworker1.RunWorkerAsync(parametros)
End Sub

Private Sub backgroundworker1_DoWork(By val sender As System.Object, By Val ....)
_ Handles Worker.DoWork

'LLAMADA AL PROCESO QUE RALENTIZA LA INTERFAZ
dim parametros as parametros_importarXML 'esto es un tipo estructura que
'contiene los dos parametros

p = CType(sender,parametros_importarXML) ' aqui al ejecutar me produce una
'excepcion de conversion no permitida
Me.importarXml(p.MyStream, p.MyrutaBD)

End Sub

End Class

En definitiva necesito, por favor, una solucion para hacer llegar varios parametros a una funcion que se va a ejecutar en segundo plano.

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Parametros a una funcion en segundo plano

Publicado por Xbi (2 intervenciones) el 05/11/2009 13:43:08
Ya lo he solucionado!

en la conversion de tipos estaba cogiendo la variable origen equivocada y por eso me producia una excepcion... a veces te ciegas ...

dejo el fragmento de codigo corregido por si le sirve a alguien

Private Sub backgroundworker1_DoWork(By val sender As System.Object, By Val e as System.ComponentModel.DoWorkEventArgs)
_ Handles Worker.DoWork

'LLAMADA AL PROCESO QUE RALENTIZA LA INTERFAZ

dim bw as BackgroundWorker = CType(sender, Backgroundworker) ' aqui si utilizo la variable sender

dim p as parametros_importarXML 'esto es un tipo estructura que
'contiene los dos parametros

p = CType(e,parametros_importarXML) ' al poner e ya no produce la excepcion y hace la conversion bien

Me.importarXml(p.MyStream, p.MyrutaBD, bw) 'aqui he añadido un parametro mas

para desde la funcion poder devolver el progreso y ponerlo en una barra de progreso

End Sub

Espero que os sirva!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar