Rotina em Segundo Plano
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Rotina em Segundo Plano
Ok, vamos de outra forma.
A Main tem janela invisível, está na thread principal, e colocou na rotina dela a chamada Events.
A janela que mostra travada está em outra thread, e não tem chamada a Events.
Relembrando: thread é como EXEs separados. Um EXE está travando, e colocou Events no outro.
A Main tem janela invisível, está na thread principal, e colocou na rotina dela a chamada Events.
A janela que mostra travada está em outra thread, e não tem chamada a Events.
Relembrando: thread é como EXEs separados. Um EXE está travando, e colocou Events no outro.
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/
Rotina em Segundo Plano
Quintas,
Nesse caso se você clica na janela principal onde executa a thread dá o Não está respondendo, a janela da thread programa separado tá ok, deu pra entender ?
Nesse caso se você clica na janela principal onde executa a thread dá o Não está respondendo, a janela da thread programa separado tá ok, deu pra entender ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Rotina em Segundo Plano
Isto é a janela principal, apenas não é visível.
Código: Selecionar todos
PROCEDURE Main
hb_ThreadWaitForAll()
RETURN
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
Rotina em Segundo Plano
Correção: isso é alguma coisa, pode ou não ser janela GTWIN, GTWVG, depende do default utilizado, de hb_gtSys() por exemplo.
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/
Rotina em Segundo Plano
Mas no meu exemplo a janela principal ou onde dispara a thread é visível.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Por exemplo eu posso disparar uma thread para impressão de algum relatório ou atualização de dados que demandam muito tempo de processamento, penso que isso é válido o uso da thread
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Rotina em Segundo Plano
Uma janela visível, dois processos no gerenciador de tarefas.
Coloque a chamada de Evento() no for/next.
Apesar que, se é GTWVG, Inkey() já faz isso.
É até comum, DO WHILE Inkey() != K_ESC.; ENDDO
Coloque a chamada de Evento() no for/next.
Apesar que, se é GTWVG, Inkey() já faz isso.
É até comum, DO WHILE Inkey() != K_ESC.; ENDDO
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/
Rotina em Segundo Plano
Vamos lá, na janela que eu quero executar a thread agora não tem janela nenhuma, então o foco tá na janela mãe
Código: Selecionar todos
* Janela mãe
nThread := hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, ;
HB_THREAD_INHERIT_PRIVATE, ;
HB_THREAD_INHERIT_MEMVARS ), ;
{ || Teste() } )
FUNCTION Teste()
FOR I:=1 TO 3000000
@ 0,0 SAY StrZero( I, 7 )
NEXT
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Quintas,
Coloquei Inkey() no for .. next e ficou a mesma coisa janela não respondendo
Coloquei Inkey() no for .. next e ficou a mesma coisa janela não respondendo
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Quintas, matei a charada, na função teste não pode ter say pra tela
Código: Selecionar todos
FOR I:=1 TO 3000000
//@ 0,0 SAY StrZero( I, 7 )
Evento()
Inkey()
NEXT
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Quintas
Descobre outra coisa.
Assim não dá janela não respondendo:
Veja a variável pública nLinha, exibindo nas 2 janelas nas funções Teste() e WaitThread( nThread )
Descobre outra coisa.
Assim não dá janela não respondendo:
Veja a variável pública nLinha, exibindo nas 2 janelas nas funções Teste() e WaitThread( nThread )
Código: Selecionar todos
FUNCTION MAIN()
PUBLIC nLinha
nThread := hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, ;
HB_THREAD_INHERIT_PRIVATE, ;
HB_THREAD_INHERIT_MEMVARS ), ;
{ || Teste() } )
//hb_ThreadWaitForAll()
WaitThread( nThread )
RETURN Nil
FUNCTION Teste()
LOCAL oCrt
//oCrt := WvgCrt():new( , , { -1, -1 }, { 25, 80 }, , .T. )
oCrt := WvgCrt():New( , , { -1, -1 }, { 26, 80 }, , .F. )
oCrt:lModal := .T.
oCrt:visible := .T.
oCrt:resizable := .F.
oCrt:style := WIN_WS_POPUP + WIN_WS_CAPTION + WIN_WS_SYSMENU + DS_CENTER + WS_VISIBLE + WS_SYSMENU
oCrt:fontName := "Lucinda Console"
oCrt:fontHeight := 24
oCrt:fontWidth := 13
oCrt:create()
Hb_GTInfo( HB_GTI_WINTITLE, "Teste com Thread" )
HB_gtInfo( HB_GTI_MAXIMIZED, .T. )
FOR nLinha:=1 TO 3000000
@ 0,0 SAY StrZero( nLinha, 7 )
//Evento()
Inkey()
NEXT
oCrt:destroy()
RETURN Nil
FUNCTION WaitThread( nThread )
DO WHILE .T.
IF hb_ThreadWait( nThread, 0.1, .T. ) == 1
EXIT
ENDIF
@ 10,00 say nLinha
Evento()
ENDDO
RETURN Nil
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Pessoal,
Peço um pouco de paciência são novos conhecimentos em um mundo windows mas agente acaba entendendo o funcionamento da coisa.
Peço um pouco de paciência são novos conhecimentos em um mundo windows mas agente acaba entendendo o funcionamento da coisa.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Outra coisa clicando no título da janela filha thread o contador para em ambas janelas main e teste ainda não entendi esse comportamento
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Rotina em Segundo Plano
Boa noite
Vendo este topico, queria tirar uma duvida.
Nao sei se seria com thread.
Mas por exemplo, digamos que estamos no menu do sistema e se escolhe o modulo de vendas.
Eu gostaria de chamar o modulo de vendas e ao mesmo tempo voltar ao menu do sistema e fazer outra operacao, ou chamar outra venda e assim navegar sem ficar preso aquela venda.
E mesmo fechando o sistema o modulo de vendas ficaria la funcionando a parte.
Vendo este topico, queria tirar uma duvida.
Nao sei se seria com thread.
Mas por exemplo, digamos que estamos no menu do sistema e se escolhe o modulo de vendas.
Eu gostaria de chamar o modulo de vendas e ao mesmo tempo voltar ao menu do sistema e fazer outra operacao, ou chamar outra venda e assim navegar sem ficar preso aquela venda.
E mesmo fechando o sistema o modulo de vendas ficaria la funcionando a parte.
Rotina em Segundo Plano
Claudio
Isso que você quer não funciona porque a janela chamadora uma vez encerrada, fecha todas as filhas.
mas o Mestre Quintas pode te esclarecer melhor
Isso que você quer não funciona porque a janela chamadora uma vez encerrada, fecha todas as filhas.
mas o Mestre Quintas pode te esclarecer melhor
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)

