para eu entender thread e class !(como citado)
utilizo xHB 1.2.3 (Simples) bcc5.82
fiz um exemplo básico a partir do amigo
JoséQuintas escreveu:Um jeito legal de trabalhar com multithread é usando CLASSE.
Isso permite conversa entre threads.
Não o fonte exato, apenas aproximado, pra dar uma idéia.
ExecutaAguarda( { || Seila() } )
FUNCTION ExecutaAguarda( bCode )
o := ProcessoClass():New()
o:Block := bCode
hb_TheadStart( { || o:Execute() } )
DO WHILE ! o:Acabou
Inkey(0.3)
ENDDO
RETURN NIL
CREATE CLASS ProcessoClass
VAR Acabou INIT .F.
VAR Block INIT {}
METHOD Execute() INLINE Eval( ::Block ), ::Acabou := .T.
ENDCLASS
resumindo, exemplo que fiz!FUNCTION Main(Envio)
ExecutaAguarda( { || devpos(10,10),devout("OLA MUNDO") } )
return
FUNCTION ExecutaAguarda( bCode )
o := ProcessoClass():New()
o:Block := bCode
StartThread( { || o:Execute() } )
DO WHILE ! o:Acabou
Inkey(0.3)
ENDDO
RETURN NIL
CREATE CLASS ProcessoClass
VAR Acabou INIT .F.
VAR Block INIT {}
METHOD Execute() INLINE Eval( ::Block ), ::Acabou := .T.
ENDCLASS
sem sucesso! fica no loop "DO WHILE ! o:Acabou"!
Obs: isso é novo para mim, não tenho conhecimento ainda!