Thread no HARBOUR e não xHarbour

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Thread no HARBOUR e não xHarbour

Mensagem 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...
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Thread no HARBOUR e não xHarbour

Mensagem por Itamar M. Lins Jr. »

Ola!
Pergunta basica...
Está compilado com MT ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Thread no HARBOUR e não xHarbour

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Re: Thread no HARBOUR e não xHarbour

Mensagem 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.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JCBarbosa
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 19 Mar 2014 15:12
Localização: Americana/SP

Thread no HARBOUR e não xHarbour

Mensagem 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
Responder