Newsgroup: it.comp.programmare.win32
Titolo: Funzione Threed

Salve,
ho una funzione che impiega molto tempo per essere eseguita e mi blocca il
mio programma.
Dato che non posso modificarla perche' e' esterna... mi hanno dato un
consiglio. Lasciarla eseguire separatamente con la gestione dei threed.
Dato che non ho mai fatto una cosa del genere mi sapreste indirizzare...
Programmo in Borland Builder
Grazie a tutti
xoooox
--------------------------------
Inviato via 
http://usenet.libero.it



 Dato che non ho mai fatto una cosa del genere mi sapreste indirizzare...
Si vede... Prova a cercare per "Thread"... 
-- 
Luc.

Ciao,
ti ringrazio per la correzione.. volevo farlo stesso io dopo aver spedito il
messaggio...
ma devo dir la verita' speravo che qualcuno non si limitasse a fare dei
commenti su come si scrive.. eheheheh
comunque ti ringrazio... eheheh
ciao
xoooox

--------------------------------
Inviato via 
http://usenet.libero.it

Per la gestione dei thread ho trovato la seguente funzione:
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)prova,
("kk"),NORMAL_PRIORITY_CLASS, &hid);
Il tutto funziona pero' se voglio passare due o tre parametri alla funzione
chiamata non so come posso fare...
Sapete come posso fare??
Grazie


 Sapete come posso fare??
Visto che sei alle prime armi ti suggerisco una struct globale. 
-- 
Luc.

 funzione chiamata non so come posso fare...
Ti crei la tua bella classe MyThread figlia di un TThread e la usi 
semplicemente costruendo un oggetto new MyThread:
TMyThread *Thread1;
Thread1 = new TMyThread(/*i tuoi parametri li metti qui*/);
La classe la puoi implementare in Unit1.cpp/h oppure (consigliato) su due 
file separati che unirai al progetto:
/**************/
/* MyThread.h */
/**************/
class TMyThread : public TThread
{
private:
protected:
	void __fastcall Execute(void);
public:
     __fastcall TMyThread(/*i tuoi parametri li metti qui*/);
};
/****************/
/* MyThread.cpp */
/****************/
__fastcall TMyThread::TMyThread(/*i tuoi parametri li metti qui*/)
    : TThread(False)
{
  FreeOnTerminate = True;
}
void __fastcall TMyThread::Execute(void)
{
//  qui ci metti quello che vuoi ma occhio che le VCL non sono thread safe,
//  se le vuoi usare dai un'occhiata a Synchronize() 
}
Cmq fossi in te sbircerei un po' di piů sull'help che tra l'altro č fatto 
benissimo.
Mieru
Che se fosse a Napoli si farebbe offrire almeno una birra.

Per prima cosa ti ringrazio :)
Ho provato il tutto e va quasi tutto bene :)
Ho seguito il tuo listato alla lettera...!!
Pero' c'e' un problemino..
I parametri che passo alla funzione vengono solo richiamati a:
"__fastcall TMyThread(char*,char*)"
mentre l'evento TMyThread::Execute(void) non li vede...(giustamente)
Ho visto che "__fastcall TMyThread(char*,char*)" viene eseguito al momento
della creazione dell'oggetto e poi viene eseguito "Execute(void)";
Il mio thread da eseguire credo che lo devo inserire in Execute(void) quindi
perdo quelle variabili.
Le devo per forza creare globali??
C'e' qualcosina che sbaglio??
comunqe ti ringrazio per la lezione :)
ciao


 wrote in message
news:192Z106Z52Z2Y1...@usenet.libero.it...


 mentre l'evento TMyThread::Execute(void) non li vede...
devi definirti delle variabili nella classe, decidi tu se private protected 
o public, ed inizializzarle tramite il costruttore TMyThread:
/* MyThread.h */
class TMyThread : public TThread
{
private:
protected:
	void __fastcall Execute(void);
     char *char1;
     char *char2;
 
public:
     __fastcall TMyThread(char *c1, char *c2);
};
/* MyThread.cpp */
__fastcall TMyThread::TMyThread(char *c1, char *c2)
    : TThread(False)
{
  FreeOnTerminate = True;
  char1 = c1;
  char2 = c2;
}
aggiungo che queste sono le basi del c++ e quindi qui siamo OT
Mieru