Página 1 de 1

Thread no HARBOUR e não xHarbour

Enviado: 11 Out 2010 01:07
por fladimir
Pessoal no xHarbour utilizava assim:

Código: Selecionar todos

nIdBkEmail01:= StartThread( "Envia_Email",  , "Analise Sistema ", , , , , cArquivo,,.F.,.F.) 
e blz sem problema....

agora no Harbour não funciona, e não é a Função Envia e-mail, pois a mesma executada fora da Thread roda legal.

estou usando o #include "hbcompat.ch" e tb a lib hbxpp mas não deu, tentei trocar por HB_ThreadStar() tb não deu...

Como os colegas q usam o Harbour estão fazendo com funções em BackGround ou Threads ???

Sds...

Re: Thread no HARBOUR e não xHarbour

Enviado: 11 Out 2010 12:54
por Itamar M. Lins Jr.
Ola!
Pergunta basica...
Está compilado com MT ?

Saudações,
Itamar M. Lins Jr.

Re: Thread no HARBOUR e não xHarbour

Enviado: 11 Out 2010 13:02
por Itamar M. Lins Jr.
Continuando...

Código: Selecionar todos

/*
 * $Id: mttest02.prg 14676 2010-06-03 16:23:36Z vszakats $
 */

/*
 * Harbour Project source code:
 *    demonstration/test code for using QUIT commands and ALWAYS statements
 *    execution. Child thread uses QUIT before main one.
 *
 * Copyright 2008 Przemyslaw Czerpak <druzus / at / priv.onet.pl>
 * www - http://harbour-project.org
 *
 */

#ifdef __XHARBOUR__
   #xtranslate hb_threadStart( <x,...> ) => StartThread( <x> )
   #xtranslate hb_threadJoin( <x,...> ) => JoinThread( <x> )
   #command begin sequence   => try
   #command always           => finally
#endif

proc main()
   local thID, i
   ? Version()
   ? "Main start"
   thID := hb_threadStart( @thFunc(), "A", "B", "C" )
   ? "Thread ID:", thID
   ? "==================="
   ?
   begin sequence
      for i := 1 to 10
         ?? "M"
         hb_idleSleep(0.050)
      next
      ? "==================="
      ? "Main QUIT"
      quit
   always
      ? "Main ALWAYS section"
      ?
   endsequence
   ? "End of main"
return

proc thFunc( ... )
   local i
   ? "Thread begin"
   ? "Parameters:"
   aeval( hb_aParams(), {|x|qqout("",x)})
   ?
   begin sequence
      for i:=1 to 10
         ?? "t"
         hb_idleSleep(0.030)
         if i == 5
            ? "Thread QUIT"
            quit
         endif
      next
   always
      ? "Thread ALWAYS section"
      ?
   endsequence
   ? "Thread end"
   ?
return

exit proc p
? "I'm EXIT procedure"
Os exemplos estão na pasta \tests\mt
compilar esse, usando: hbmk2 mttest02.prg -mt
Resultado:
C:\harbour\trunk\harbour\tests\mt>mttest02

Harbour 2.1.0beta2 (Rev. 15561)
Main start
Thread ID: 0x00A8A20C
===================

Thread begin
Parameters: AM B C
ttMttMt
Thread QUIT
Thread ALWAYS section
MMMMMMM
===================
Main QUIT
Main ALWAYS section

I'm EXIT procedure
C:\harbour\trunk\harbour\tests\mt>
Saudações,
Itamar M. Lins Jr.

Re: Thread no HARBOUR e não xHarbour

Enviado: 11 Out 2010 14:07
por fladimir
Olá Itamar, sim estou compilando com MT utilizando -mt no hbmk2, entao eu vi os exemplos e testei, mas no meu codigo acima demonstrado não vai, e se faço a função Envia_Email() por fora da Thread funciona normal.

no Inicio do Código estou colocando "hbcompat.ch" q faz o translate do exemplo q vc postou e uso tb a lib xhb

Sera q pode ser isto?

Sds.

Thread no HARBOUR e não xHarbour

Enviado: 12 Nov 2018 17:34
por JCBarbosa
Olá Pessoal.... preciso de uma ajuda....
Já vi vários post ai, mas não consigo ver como começar e qual função utilizar.....
- Preciso que um função que rode e fique verificando a cada 30 segundos e me avise quando chega arquivo em uma determinada pasta.
- Tenho um aplicativo que vai baixar os pedidos em XML em uma pasta e queria que quando chegar possa me avisar com msg ou Beep a cada 10, 20 segundos
ex Pasta C:\Arquivos arquivos = .XML (HARBOUR)

alguém poderia me ajudar ??

grato e no aguardo