Pbm con dll per c++ builder 4

giovedì 24 luglio 2003 - 21.36

joshua176 Profilo | Newbie

Ho realizzato una dll per c++.

Il problema che quando effettuo un ciclo all'interno della mia dll
il sistema sembra in pallarsi finchè non è terminato il ciclo.
L'utente non riesce piu' a passare da una finestra all'altra quando il
ciclo in esecuzione.

Qualcuno ha un'idea come posso fare per ovviare a questo?


Grazie 1000!

Saluti gio

Brainkiller Profilo | Guru

Ciao joshua e Benvenuto,
quello di cui parli credo sia riconducibile ad un problema abbastanza noto e cioè di quando in una applicazione Windows si devono fare calcoli gravosi.
Di solito succede che necessitano di diversi secondi di elaborazione e bloccano l'interfaccia grafica (GUI) fino a quando sono terminati.
Con le Microsoft Foundation Classes (MFC) di Visual C++ si risolveva creando un Worker Thread cioè un Thread separato per fare il calcolo, in questo modo il Thread che gestiva l'applicazione rimaneva scarico e quindi all'utente non veniva data l'impressione di un blocco del programma.
Io penso che se tu crei un Thread in cui metti le istruzioni che richiedono più tempo risolvi il problema.

Cosa ne pensi?
Ciao

David De Giacomi

joshua176 Profilo | Newbie

Hai perfettamente individuato il problema e credo la
soluzione.

Purtroppo data la mia ignoranza tecnica, sono ancora qui a rivolgerti un'altra domanda. Cosa intendi per Worker thread?

Hai un esempio pratico oppure un link che lo spieghi.

Grazie 1000 per il tuo aiuto

joshua176 Profilo | Newbie

Forse intendi una applicazione con finestra e quant'altro e quindi non solo codice?

Come posso farlo all'interno di DLL?

Brainkiller Profilo | Guru

Niente un Worker Thread è semplicemente un Thread, immagino tu sappia cos'è un Thread...
Solo che "Worker" significa che è dedicato ad un lavoro di tipo "intesive" calcoli pesanti, ridisegnare immagini, rendering di immagini, ecc.
C'è una API di Windows che permette di creare un Thread ed è CraeteThread. In Visual C++ la cosa si gestisce molto bene, ancora meglio tramite MFC, però tu lavori con il Builder che non ho mai usato, immagino che però puoi chiamare le funzioni base Win32.
Questa dovrebbe essere la soluzione e dovrebbe funzionare.

Ciao
David
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5