Amigos, días atrás pregunté aquí mismo sobre hilos y con la ayuda de Neftali y los ejemplos que vi aclaré mis dudas y estoy dando mis primeros pasos en este mundo. Ahora bien, estoy teniendo el siguiente problema y se los pongo aquí a ver si me dan una ayuda.
Quiero acceder a unas tablas hechas en Visual FoxPro desde 3 hilos en mi aplicacion, para esto he creado un origen de datos y he usado el controlador Microsoft Visual FoxPro Driver. En Delphi he puesto en un TDataModule un componente TADOConnection y he creado la conexión usando como proveedor Microsoft OLE DB Provider for ODBC Drivers. La cual ha quedado asi:
Provider=MSDASQL.1;Persist Security Info=False;Data Source=Tempus;Mode=Read
Ahora bien, he puesto 3 componentes TADOQuery en el TDataModule para recuperar la información que necesito de las tablas .dbf. Hice 3 clases derivadas de TThread y puse en el Execute de la primera código que me abre la consulta1 y la informacion la guardo en una tabla paradox, hice algo parecido en el execute del segndo hilo, abro la consulta 2 y guardo la informacion en otra tabla paradox y lo mismo en el hilo3 con la consulta 3 y otra tabla paradox.
Hasta aqui al compilar no hay error, pues copié y pegué lo que ya había hecho en el programa anteriormente y que se ejecutaba en el hilo principal antes de pensar en dividir mi aplicación en 3 hilos para agilizar el proceso porque era lógico que si ninguna de estas 3 tareas dependía una de la otra se podían ejecutar en paralelo y aquí es donde se me ha enredado todo.
Ahhh quiero decir antes de seguir que todo funciona a la mil maravillas si me olvido de hilos y todo lo pongo en el hilo principal como siempre había hecho en mis modestos programas pero ahora necesito velocidad.
Cuando creía que todo estaba bien y ejecuté al parecer no hacía nada, empecé a "debuguear" y me percaté que cuando mandaba abrir las tablas paradox el programa saltaba como si se hubiera producido un error, me dio por poner 3 componentes TSession y creo haber resuelto el problema porque había leído por ahí que cuando se necesitaba acceder simultáneamente a la BDE había que usar sesiones distintas.
Luego la aplicación seguía sin funcionar, cuando mandaba abrir una de las ADOQuery el programa volvía a saltar, se me ocurrión marcar en el IDE de Delphi en Tools/Debugger Options/Language Exceptions/ Stop on Delphi Exceptions y me salió el error ... No se ha llamado a CoInitialize. y bueno ya aquí si me he parado porque no se que más hacer.
Podría alguien referirme algo que hacer o decirme que me falta, que estoy haciendo mal?
Gracias, Damián.