Como matar ThRead?
Moderador: Moderadores
Como matar ThRead?
Pessoal,
Com hb_ThreadStart eu inicio uma Thread. Mas como mato uma ThRead sem que seja preciso sair do sistema?
Janio
Com hb_ThreadStart eu inicio uma Thread. Mas como mato uma ThRead sem que seja preciso sair do sistema?
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Como matar ThRead?
Não sei a razão, mas para mim apenas funcionou as funções:
hb_threadTerminateAll()
ou
KillThread(ThRead)
Janio
hb_threadTerminateAll()
ou
KillThread(ThRead)
Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Como matar ThRead?
Jânio, saberia se tem como suspender/parar por um determinado tempo uma Thread?
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Como matar ThRead?
Nao sei. O mundo ThRead ainda eh novo pra mim hehehe
Mas acredito que sim. Não sei se as funções abaixo são para "esperar" alguma outra operação terminar, ou se são para suspender a execução da propria ThRead. Ja eh um bom começo para estudos
hb_threadWaitForAll()
hb_threadWait( <pThID> | <apThID>, [ <nTimeOut> ] [, <lAll> ] ) => <nThInd> | <nThCount> | 0
Mas acredito que sim. Não sei se as funções abaixo são para "esperar" alguma outra operação terminar, ou se são para suspender a execução da propria ThRead. Ja eh um bom começo para estudos
hb_threadWaitForAll()
hb_threadWait( <pThID> | <apThID>, [ <nTimeOut> ] [, <lAll> ] ) => <nThInd> | <nThCount> | 0
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Como matar ThRead?
Tenho um problema aki q é o seguinte...
hb_threadTerminateAll() //------------> Funciona porém além de matar a thread q quero mata outras q não quero
ou
KillThread(ThRead) //-----------> Da erro como se a função não existisse.
Alguma ideia?
hb_threadTerminateAll() //------------> Funciona porém além de matar a thread q quero mata outras q não quero
ou
KillThread(ThRead) //-----------> Da erro como se a função não existisse.
Alguma ideia?
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.
“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.
Como matar ThRead?
Consegui resolver, eu estava pegando o retorno da criação da thread como variavel private ai dava erro, criei uma variavel STATIC ai deu certo.
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.
“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.
Como matar ThRead?
:-O
Srs. que utilizam o recurso, poderiam me exemplificar um uso legal dessa ThRead, tipo faço determinada coisa enquanto outra coisa acontece, mas... ainda estou :-[ .
HASA
Srs. que utilizam o recurso, poderiam me exemplificar um uso legal dessa ThRead, tipo faço determinada coisa enquanto outra coisa acontece, mas... ainda estou :-[ .
HASA
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Como matar ThRead?
Criei este pra certas situações
Pra encerrar com segurança seria oProcesso:lExit := .T.
Tipo..... quer que o sistema avise de pedidos atrasados enquanto o usuário estiver usando o módulo de pedidos.
Saiu do módulo de pedidos, encerra automaticamente o sistema de avisos de pedido atrasado.
Código: Selecionar todos
CREATE CLASS RunWhileThreadClass
VAR lExit INIT .F.
VAR nThreadId
VAR nInterval INIT 600
VAR cWindowTitle INIT ""
VAR bCode
METHOD New() INLINE ::nThreadId := hb_ThreadSelf(), SELF
METHOD Execute( bCode )
ENDCLASS
METHOD Execute( bCode ) CLASS RunWhileThreadClass
LOCAL nCont
hb_gtReload( hb_gtInfo( HB_GTI_VERSION ) )
IF bCode != NIL
::bCode := bCode
ENDIF
AppInitSets()
HB_GtInfo( HB_GTI_WINTITLE, ::cWindowTitle )
wvgSetAppWindow():Hide()
DO WHILE ! ::lExit
Eval( ::bCode )
FOR nCont = 1 TO ::nInterval
hb_ReleaseCPU()
IF hb_ThreadWait( ::nThreadId, 0.1, .T. ) == 1
::lExit := .T.
ENDIF
Inkey(1)
IF ::lExit
EXIT
ENDIF
NEXT
ENDDO
RETURN NIL
Pra encerrar com segurança seria oProcesso:lExit := .T.
Tipo..... quer que o sistema avise de pedidos atrasados enquanto o usuário estiver usando o módulo de pedidos.
Saiu do módulo de pedidos, encerra automaticamente o sistema de avisos de pedido atrasado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Como matar ThRead?
Algo como:
E só.
No New() a classe pega a ID da thread atual.
No Execute() roda em thread separada, em loop, sempre testando a ID salva.
Se a ID salva encerrou (o programa que ativou a thread), a thread se fecha sozinha.
Código: Selecionar todos
oProcesso := RunWhileThreadClass():New()
oProcesso:bCode := { || executar() }
hb_ThreadStart( oProcesso:Executer() )
No New() a classe pega a ID da thread atual.
No Execute() roda em thread separada, em loop, sempre testando a ID salva.
Se a ID salva encerrou (o programa que ativou a thread), a thread se fecha sozinha.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Como matar ThRead?
Talvez criar um método pra retornar o ID, ou pra "se matar", mas se estiver travado, não sei se a classe responderia.
É um jeito interessante das threads conversarem entre si.
É um jeito interessante das threads conversarem entre si.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Como matar ThRead?
Já foi respondido, mas só pra mostrar opções:fladimir escreveu:hb_threadTerminateAll() //------------> Funciona porém além de matar a thread q quero mata outras q não queroouKillThread(ThRead) //-----------> Da erro como se a função não existisse.
hbmk2 -find thread
hbxpp.hbc (instalado):
Thread()
ThreadID()
ThreadObject()
ThreadWait()
ThreadWaitAll()
hbpgsql.hbc (não instalado):
PQisthreadsafe()
hbsqlit3.hbc (instalado):
sqlite3_threadsafe()
hbwin.hbc (instalado):
wapi_GetCurrentThread()
wapi_GetCurrentThreadId()
rddads.hbc (não instalado):
AdsMgGetWorkerThreadActivity()
xhb.hbc (instalado):
GetCurrentThread()
GetSystemThreadId()
GetThreadId()
hb_MultiThread()
IsSameThread()
IsValidThread()
JoinThread()
KillAllThreads()
KillThread()
StartThread()
StopThread()
ThreadGetCurrent()
ThreadGetCurrentInternal()
ThreadSleep()
WaitForThreads()
Núcleo Harbour (instalado):
hb_threadDetach()
hb_threadID()
hb_threadIsMain()
hb_threadJoin()
hb_threadOnce()
hb_threadOnceInit()
hb_threadQuitRequest()
hb_threadSelf()
hb_threadStart()
hb_threadTerminateAll()
hb_threadWait()
hb_threadWaitForAll()
__vmCountThreads()
josequintas.hbc (não instalado):
appismultithread()
changemultithread()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
