Preciso executar um processo em paralelo e pra não ter que fazer outro exe resolvi tentar com thread. Tudo ocorre bem, a thread faz o que tem que fazer, porém ao voltar da thread o meu sistema apresenta erro para qualquer função chamada abortando o sistema sem qualquer aviso. O erro eh: Muitas chamadas recursivas ao manipulador de erros
Se tiro a chamada da thread, tudo volta a funcionar normalmente como sempre funcionou. Parece que ao chamar a thread, ela modifica o comportamento do sistema, sei la...
Eu só preciso que ao retornar da thread o sistema se comporte da mesma maneira
:(
...
SET TIMER oTimer3 OF oDlgSAT VALUE (45*1000) ACTION {|| EnviaVFPeIntegrador() }
DoEvents()
ACTIVATE DIALOG oDlgSAT SHOW SW_SHOWMAXIMIZED
RETURN oDlgSAT:lresult
/*--------------------------------------------------------------------------------------*/
Function EnviaVFPeIntegrador
ThReadVFPeIntegrador := Hb_ThreadStart( Hb_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE ), { || Proces(cChvReq, cChvVal, cIdeInt, cCGCEMP) } )
Return Nil
/*--------------------------------------------------------------------------------------*/
Function Proces(pChvReq, pChvVal, pIdeInt, pCGCEMP)
DbUseArea(.t.,"MEDCDX","A20MPG","MeioPGint")
If NetErr()
Return
Endif
DbUseArea(.t.,"MEDCDX","A20cfe","CupomInt")
If NetErr()
Close CupomInt
Return
Endif
cQuery = "SELECT * " + ;
"FROM " + ;
"a20mpg " + ;
"WHERE " + ;
"IS_DELETED='N' and IdFila='' and meiopg ='CARTAO POS' and nrssat!='' " + ;
"ORDER BY " + ;
"datmov "
GERA_TAB()
use &dbftmp as cQuery NEW SCROLLABLE
If Reccount() > 0
DbGoTop()
pVlrCup := TotPed
pVlrCrt := VlrPag
pSerPos := AllTrim(SerPos)
pNumPed := NumPed
Select CupomInt ; DbSetOrder(1)
If DbSeek( pNumPed )
pCodCxa := &dbftmp->CodCxa
pNumCup := &dbftmp->NumPed
cRet := EnviaPagamentoXml( pCodCxa, pChvVal, pChvReq, pIdeInt, pSerPos, pCGCEMP, pVlrCup, pVlrCrt, "Pedido Caixa " + StrZero(pCodCxa,3) )
If hb_At("|",cRet) > 0
aToken := hb_aTokens( cRet, "|" )
pIdFila := aToken[1]
pPgtoLc := If( Upper(aToken[2])="SALVOEMARMAZENAMENTOLOCAL", "S", "N" )
pIdRsFi := 0
If pPgtoLc = "N"
cRet := EnviaRespostaFiscalXml( pCodCxa, pChvVal, pIdFila, CupomInt->ChvCup, AllTrim(&dbftmp->NumNsu), AllTrim(&dbftmp->NumAut), AllTrim(&dbftmp->BanDei), AllTrim(&dbftmp->NomAdq), pCGCEMP, &dbftmp->NumCup )
If hb_At("|",cRet) > 0
aToken := hb_aTokens( cRet, "|" )
If aToken[1] = "AP"
pIdRsFi := Val(aToken[2])
Endif
Endif
Endif
Select MeioPGint ; DbSetOrder(1)
DbGoTop()
OrdScope( 0, pNumCup )
OrdScope( 1, pNumCup )
DbGoTop()
Do While !Eof()
If Upper(AllTrim(MEIOPG)) == "CARTAO POS" .and. pSerPos == AllTrim(SerPos) .and. pVlrCup == TotPed .and. pVlrCrt = VlrPag
Trava()
replace IdFila with pIdFila
replace IDRSFI with pIdRsFi
replace DatCon with Date()
replace HorCon with Time()
replace UsuCon with CODNOM
ComitaOne()
Endif
DbSkip()
Enddo
OrdScope( 0, Nil )
OrdScope( 1, Nil )
Endif
Endif
Endif
Close &dbftmp
Close MeioPGint
Close CupomInt
Return Nil
hb_out.txt
Application Internal Error - C:\harbour32\sistemas\PafPDV\CriaSAT.exe
Terminated at: 2019-03-16 15:16:24
Erro irrecuper vel 9003: Muitas chamadas recursivas ao manipulador de erros
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from DEFERROR(223) in errorsysSAT.prg
Called from (b)ERRORSYS(22) in errorsysSAT.prg
Called from DBUNLOCKALL(0)
Called from COMITA(12020) in funcoesSAT.prg
Called from SAIDAPDV(2549) in pdvSAT.prg
Called from (b)_PDVSAT(519) in pdvSAT.prg
Called from ENDDIALOG(834) in source\hdialog.prg
Called from (b)HDIALOG(96) in source\hdialog.prg
Called from HDIALOG:CLOSE(0) in source\hdialog.prg
Called from HDIALOG:ONEVENT(258) in source\hdialog.prg
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(188) in source\hdialog.prg
Called from _PDVSAT(1035) in pdvSAT.prg
Called from PDVSAT(9) in pdvSAT.prg
Called from (b)_MAIN(770) in MenuSAT.prg
Called from HBUTTONEX:ONCLICK(1144) in source\hcontrol.prg
Called from (b)HBUTTON_NEW(1036) in source\hcontrol.prg
Called from DLGCOMMAND(568) in source\hdialog.prg
Called from (b)(_INITSTATICS00003)(0) in source\hdialog.prg
Called from HDIALOG:ONEVENT(255) in source\hdialog.prg
Called from SENDMESSAGE(0)
Called from HBUTTONEX:ONEVENT(1502) in source\hcontrol.prg
Called from HWG_DLGBOXINDIRECT(0)
Called from HDIALOG:ACTIVATE(188) in source\hdialog.prg
Called from _MAIN(828) in MenuSAT.prg
Called from MAIN(13) in MenuSAT.prg
------------------------------------------------------------------------
PS: Uso hwgui nesse projeto