Multihilo y cierre de DBF

Post Reply
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Multihilo y cierre de DBF

Post by FiveWiDi »

Hola a todos,

En un proceso abro una ventana, en esta ventana muestro un XBrowse de una DBF.
En el Valid de la ventana cierro la DBF.

En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.

Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.

¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
User avatar
Antonio Linares
Site Admin
Posts: 42655
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 67 times
Been thanked: 96 times
Contact:

Re: Multihilo y cierre de DBF

Post by Antonio Linares »

Carlos,

Has probado a abrir la DBF como SHARED ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

Juraría que las abro shared.

Al final acaba cerrándolas, pero me envía un mensaje de error la clase que manejo que me da que no le gusta el multihilo.

Leí que en multihilo puedes incluso usar el mismo alias en diferentes hilos, de ahí mi temor, de que hubiera algún impedimento en cerrarlas.

Investigaré más.

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

Parece que algo tiene que ver el multihilo.

Sin multihilo va de 10.

Las abro shared.

De momento lo salvo quitando el multihilo. De hecho en esa situación en la que se encuentra el programa no es necesario.

Pero siguiré con ello.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
User avatar
Otto
Posts: 6416
Joined: Fri Oct 07, 2005 7:07 pm
Has thanked: 35 times
Been thanked: 2 times
Contact:

Re: Multihilo y cierre de DBF

Post by Otto »

Hello,
May I ask why you want to use multithreading?
Actually, I always read about problems with multithreading, even in Xbase.
Couldn't you solve this with a microservice or a well-thought-out architecture (Master/Slave)?

Example: Monthly Financial Report Generation

Step 1: Master EXE (Start.exe)
Starts the following slave EXE files:

- SalesData.exe: Processes sales data and calculates sales tax.
- PurchaseData.exe: Processes purchase data and calculates profit margins.
- InventoryData.exe: Processes inventory data and calculates inventory metrics.
- Reports.exe: Generates the PDF or Excel reports.

Monitors the progress of the slave EXE files using a timer.

Step 2: Slave EXE Files
Each slave EXE writes its results into a shared database or a temporary file.

Step 3: Result Merging
The master EXE checks whether all slave EXE files have completed.

It reads the results from the database or temporary files and generates the final report.

Regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

Muchas gracias Otto,

El caso es que en un principio se trataba de una aplicación que generaba facturas, y en un corto espacio de tiempo se debía enviar información a la hacienda pública española.
Este envío pensé que podía ser un proceso independiente, transparente para el usuario, que no penalizará las tareas habituales y que tuviera la posibilidad de interactuar con él.

Siendo así, descarté los servicios por que además no estoy habituado a ellos y quería que su instalación fuera muy simple (de hecho con un copiar-pegar, el programa funciona, y es un sólo EXE).
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
User avatar
Otto
Posts: 6416
Joined: Fri Oct 07, 2005 7:07 pm
Has thanked: 35 times
Been thanked: 2 times
Contact:

Re: Multihilo y cierre de DBF

Post by Otto »

Carlos,
I see the advantages you are talking about, and indeed, one of FIVEWIN's strengths is that you practically only need to copy an EXE.

One disadvantage I see when packing everything into a single EXE is that the entire program becomes very complex. You have to weigh the pros and cons. I personally use EXEs with a timer function more frequently. For example, when I make a request from the internet, I first create a TXT file with the data for the request. The EXE with the timer then detects it and calls a FIVEWIN program with parameters. If the FIVEWIN program detects that it was called with the "onlinerequest" parameter, I simply start the request within the FIVEWIN program and generate, for example, a PDF, which I then retrieve from the internet.

This works very well for me, and the speed is also good.

Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

Otto,

Ciertamente el EXE lleva muchísimo código, en su momento intenté separar funciones que podrían ser reutilizadas en otros proyectos (arquitectura), pero hace 4 meses me di cuenta de que fracasé en este propósito.
Eso sí el mantenimiento es fácil, tiene 2 clases que son la base de todo el sistema y una estructura de trabajo similar en todos los módulos.

La solución fue relativamente fácil; según para que necesidades o módulos debo habilitar, cambio el menú y los permisos.
El usuario no sabe realmente lo que está dentro de este exe (recibos periódicos, base de personas, actividades de asociaciones, albaranes, facturas, contabilidad, etc. y ahora Verifactu [*]).

Tal como dices es sopesar los pros y contras.

[*] Tanto para sus 'propios' módulos de facturación como para programas externos de terceros.
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
User avatar
Carles
Posts: 1153
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona
Been thanked: 7 times
Contact:

Re: Multihilo y cierre de DBF

Post by Carles »

Carlos,

El sistema de hilos de harbour funciona perfectamente, lo que pasa es que debes ser cuidadoso al programarlo y entender lo que haces. Te recomiendo que te les as este artículo de Rafa que es es tremendo, intentes probar los ejemplos y luego aplicarlo a tu caso.

https://carles9000.github.io/index_doc_ ... arch=hilos

En la página 22 tienes un ejemplo brutal.

Te recomiendo usar un alias para tu dbf en tu hilo...

Saludos.
C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

Moltes gràcies Carles,

Este documento lo leí una vez pero no sabía donde lo tenía.

Lo releeré.

Seguimos,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
JoséQuintas
Posts: 74
Joined: Tue Feb 09, 2021 4:20 pm
Been thanked: 1 time

Re: Multihilo y cierre de DBF

Post by JoséQuintas »

FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?
José M. C. Quintas Brazil
gtwvg, fivewin 25.01, hwgui, mingw 15.0 rc (32 bits)
FiveWiDi
Posts: 1248
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 4 times
Been thanked: 6 times

Re: Multihilo y cierre de DBF

Post by FiveWiDi »

JoséQuintas wrote: Mon Mar 03, 2025 1:36 pm
FiveWiDi wrote: Sat Mar 01, 2025 12:02 am En otra función lanzo un proceso en un Hilo independiente, esta función deberá cerrar la ventana del XBrowse.
Entonces el proceso que está trabajando en el hilo independiente, cuando intenta cerrar la ventana no puede cerrar el DBF.
¿Cómo puedo cerrar un DBF abierto en el hilo principal del programa, desde un hilo diferente?
Para mí esto no tiene sentido.
El multihilo es como tener varios EXEs.
¿Por qué un EXE cerraría archivos del otro EXE?
En cierta manera así es.
Se trata de un software que INICIALMENTE permitía unas tareas y enviaba desatendidamente información mientras el usuario lo usaba, de ahí el multihilo para ese envío.
El caso es que se le modifica su funcionalidad de manera que el envío pasa a ser la única tarea que debe realizar, pero durante la adaptación a ese nuevo propósito no se elimina el multihilo y se establece que se cierre el programa a una hora determinada.
Y esto provocó mi consulta.
¿Cómo cerrar un programa desde un hilo hijo del 'principal', cuando hay una ventana con un Browse de unas DBF que ha sido creada desde el hilo 'principal'?
Este escenario no tenía sentido, y se ha eliminado el multihilo.

Muchas gracias,
Un Saludo
Carlos G.

FiveWin 24.02 + Harbour 3.2.0dev (r2403071241), BCC 7.7 Windows 10
Post Reply