FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Multihilo y cierre de DBF
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 12:02 AM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 05:12 AM

Carlos,

Has probado a abrir la DBF como SHARED ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 07:57 AM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 08:09 AM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 08:52 AM

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

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 05:04 PM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 6984
Joined: Fri Oct 07, 2005 07:07 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 06:08 PM

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

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Sat Mar 01, 2025 06:43 PM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Multihilo y cierre de DBF
Posted: Mon Mar 03, 2025 06:19 AM
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_es.html?search=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
HIX -> https://github.com/carles9000/hix
Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Mon Mar 03, 2025 10:27 AM

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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Posts: 104
Joined: Tue Feb 09, 2021 04:20 PM
Re: Multihilo y cierre de DBF
Posted: Mon Mar 03, 2025 01:36 PM
FiveWiDi wrote: 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.12, hwgui, mingw 15.2 (32 bits)

Posts: 1446
Joined: Mon Oct 10, 2005 02:38 PM
Re: Multihilo y cierre de DBF
Posted: Wed Mar 05, 2025 10:57 PM
JoséQuintas wrote:
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 25.12 + Harbour 3.2.0dev (r2502110321), BCC 7.7 Windows 11 Home

Continue the discussion