Thread ou novo Programa
Moderador: Moderadores
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Thread ou novo Programa
Bom dia...
Preciso criar um monitor para as nfce. Preciso que ele fique rodando e verificando se tem alguma nfce pendente ou em contingência para ser enviada.
Daí dei uma pesquisada sobre thread.. Eu poderia executar uma thread para fazer isso? Ela vai ser carregada como se fosse um outro programa independente? Se o programa que executou essa thread for fechado ela fecha também?
Quanto a fazer um programa pra isso, deveria fica na barra de tarefas? Seria melhor ficar independente do sistema padrão ?
Obrigado
Rubens
Preciso criar um monitor para as nfce. Preciso que ele fique rodando e verificando se tem alguma nfce pendente ou em contingência para ser enviada.
Daí dei uma pesquisada sobre thread.. Eu poderia executar uma thread para fazer isso? Ela vai ser carregada como se fosse um outro programa independente? Se o programa que executou essa thread for fechado ela fecha também?
Quanto a fazer um programa pra isso, deveria fica na barra de tarefas? Seria melhor ficar independente do sistema padrão ?
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Thread ou novo Programa
Rubens,
Você pode usar funções que esperam o término da execução da thread antes de sair do sistema
Por exemplo:
...
Antes de sair do programa
Aguarda o término da thread antes de sair.
Você pode usar funções que esperam o término da execução da thread antes de sair do sistema
Por exemplo:
Código: Selecionar todos
PUBLIC nThread
nThread:=hb_ThreadStart( HB_BITOR( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), @Processo() )
Antes de sair do programa
Aguarda o término da thread antes de sair.
Código: Selecionar todos
DO WHILE .T.
IF hb_ThreadWait( nThread, 0.1, .T. ) == 1
EXIT
ENDIF
ENDDO
Quit
►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)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Thread ou novo Programa
Sim, com certeza.rubens escreveu:Eu poderia executar uma thread para fazer isso?
Ela vai ser executada junto com o programa que a criou, mas de forma independente.rubens escreveu:Ela vai ser carregada como se fosse um outro programa independente?
Sim, se o programa que a criou for encerrado, ela também será encerrada.rubens escreveu:Se o programa que executou essa thread for fechado ela fecha também?
Dependendo do objetivo do programa, sim, acho que seria melhor.rubens escreveu:Quanto a fazer um programa pra isso, deveria fica na barra de tarefas?
Acho que seria melhor, você poderia colocar o programa para ser executado junto com o Windows, assim o programa ficaria em execução enquanto o computador estiver ligado.rubens escreveu:Seria melhor ficar independente do sistema padrão ?
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Thread ou novo Programa
Só complementando o que o Toledo já colocou:
Imagine o seguinte:
O usuário sai fora do aplicativo, as threads são fechadas, e se tiver nota pendente... vai continuar pendente.
Ou...
O usuário abre o aplicativo, a thread verifica as notas.
O usuário abre o aplicativo em outra janela, serão duas threads verificando as notas, que podem se atrapalhar.
Já em programa separado, mais fácil de controlar.
Se deixar visível corre o risco do usuário fechar.
Por outro lado, se não ficar visível, o usuário não vai saber se está em execução.
Lembrando que pode até instalar isso como serviço no Windows, mas pode ficar sem mensagens de erro, por exemplo.
Lembrando também, que poderia existir a opção do servidor ficar processando, e não o terminal.
A questão é da parte operacional, antes da parte técnica.
A partir daí, a decisão é sua, sobre o que acha melhor.
Imagine o seguinte:
O usuário sai fora do aplicativo, as threads são fechadas, e se tiver nota pendente... vai continuar pendente.
Ou...
O usuário abre o aplicativo, a thread verifica as notas.
O usuário abre o aplicativo em outra janela, serão duas threads verificando as notas, que podem se atrapalhar.
Já em programa separado, mais fácil de controlar.
Se deixar visível corre o risco do usuário fechar.
Por outro lado, se não ficar visível, o usuário não vai saber se está em execução.
Lembrando que pode até instalar isso como serviço no Windows, mas pode ficar sem mensagens de erro, por exemplo.
Lembrando também, que poderia existir a opção do servidor ficar processando, e não o terminal.
A questão é da parte operacional, antes da parte técnica.
A partir daí, a decisão é sua, sobre o que acha melhor.
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/
Thread ou novo Programa
Acredito q seja melhor um programa a parte no servidor.
Vc pode fazer teu sistema qdo entra verificar se o programa monitor esta rodando, caso não esteja starta, caso esteja ok..
Ai o programa monitor fica monitorando se terá notas pendentes de transmissão e se encarrega do resto.
Agora uma preocupação q deverá existir será o seguinte ao meu ver, terá q ter tipo uma forma de não conflitar com possíveis emissões normais... explico:
Pelo q vejo vc utiliza o ACBrMonitorPlus q monitora determinada pasta etc...
Ai teu aplicativo pode ter 1 ou mais terminais emitindo NFCe, ou seja, gerando arquivos para o ACBr em determinada pasta
Então uma situação q vc tem q pensar é q pode ser q teu monitor de NFCe q estejam em contingência num mesmo momento tentará transmitir as NFCes pendentes e algum terminal pode estar gerando NFCe, então tem q pensar em pra isto, caso a forma q vc faça seja semelhante a q eu coloquei acima.
Se teu sistema de vendas roda tipo OFFLine independente da Retaguarda seria outra questão a se pensar tb se monitora por PDV ou no Servidor.
Eu acredito q mesmo q seja OFFLine tb, tipo tenha PDVs independentes a melhor forma é centralizar o processamento no Servidor, tipo após sincronizar os PDVs com o Servidor o monitor se encarrega do restante (desde q observada uma forma de evitar conflito na hora de emitir com emissões normais q podem concorrer com os envios das pendentes)
Desculpe se compliquei, mas se esta usando o ACBr tem q pensar tb nestas questões.
[]´s
Vc pode fazer teu sistema qdo entra verificar se o programa monitor esta rodando, caso não esteja starta, caso esteja ok..
Ai o programa monitor fica monitorando se terá notas pendentes de transmissão e se encarrega do resto.
Agora uma preocupação q deverá existir será o seguinte ao meu ver, terá q ter tipo uma forma de não conflitar com possíveis emissões normais... explico:
Pelo q vejo vc utiliza o ACBrMonitorPlus q monitora determinada pasta etc...
Ai teu aplicativo pode ter 1 ou mais terminais emitindo NFCe, ou seja, gerando arquivos para o ACBr em determinada pasta
Então uma situação q vc tem q pensar é q pode ser q teu monitor de NFCe q estejam em contingência num mesmo momento tentará transmitir as NFCes pendentes e algum terminal pode estar gerando NFCe, então tem q pensar em pra isto, caso a forma q vc faça seja semelhante a q eu coloquei acima.
Se teu sistema de vendas roda tipo OFFLine independente da Retaguarda seria outra questão a se pensar tb se monitora por PDV ou no Servidor.
Eu acredito q mesmo q seja OFFLine tb, tipo tenha PDVs independentes a melhor forma é centralizar o processamento no Servidor, tipo após sincronizar os PDVs com o Servidor o monitor se encarrega do restante (desde q observada uma forma de evitar conflito na hora de emitir com emissões normais q podem concorrer com os envios das pendentes)
Desculpe se compliquei, mas se esta usando o ACBr tem q pensar tb nestas questões.
[]´s
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.
Thread ou novo Programa
Na minha opinião também concordo com um processo externo a aplicação.
Que pode ser feito com harbour puro ou harbpur + hmg ou harbour + hwgui, pode ser systray ou serviço windows, para manutenção evetual o ideal é systray, porque serviço tem que parar o serviço e pode dar merca...se não souber fazer ou se deixar o usuário fazer isso. Se o usuário fechar a execução no systray o máximo que pode acontecer e não fazer nada, rs.
Que pode ser feito com harbour puro ou harbpur + hmg ou harbour + hwgui, pode ser systray ou serviço windows, para manutenção evetual o ideal é systray, porque serviço tem que parar o serviço e pode dar merca...se não souber fazer ou se deixar o usuário fazer isso. Se o usuário fechar a execução no systray o máximo que pode acontecer e não fazer nada, rs.
►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)
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Thread ou novo Programa
No momento meu sistema só fecha venda em um local... Normalmente nao coloco o ACBR no servidor... Caso o ACBR congele o que é muito comum em Server 2008, as vezes é necessário reiniciar o pc nesse caso reiniciar um servidor onde tem uns 08 terminais fazendo venda e mais os pcs do administrativo é meio complicado... Então normalmente solicito do cliente uma máquina só para processar nfce... se houver disponibilidade outra para processar as nfe. Daí caso o tenha algum problema e tenha que resetar a máquina tá isolado.
Tenho um gerenciador de NFCe em minigui... de um programa que só emite nfce. Acho que vou partir dele para esse outro gerenciador robô... Só que o usuário tem que ter acesso a ele, porque com nfce tudo é possível.. éh cada erro 'desconhecido'... Não vou mudar o que já existe hoje... Só vou limitar mais o tempo na emissão de uma nfce... Em 10 segundos não obteve resposta.. entra em contigência... imprimir o danfe para o cliente e bola pra frente...
Daí esse gerenciador robô a cada período de tempo vai monitorar se existe alguma nfce em contigência, vai travar ela (para o caixa não tentar enviar manualmente naquele momento) e enviar.
No final do dia no fechamento do caixa se tiver cupons ainda não autorizados o caixa toma as devidas providências.
Em clientes que tem somente um pc funcionará basicamente da mesma forma. Nestes clientes hoje já não deixo fechar o caixa se tiver cupons abertos. Então o que o gerenciador robô não conseguir enviar o cliente vai ter que fazer manual.
Vou dar uma pesquisada de como colocar um programa para rodar no tray quando o pc iniciar...
Claro que se alguém já tiver alguma coisa nesse sentido, sinta-se a vontade para mostrar... ficarei muito grato...
Obrigado
Rubens
Tenho um gerenciador de NFCe em minigui... de um programa que só emite nfce. Acho que vou partir dele para esse outro gerenciador robô... Só que o usuário tem que ter acesso a ele, porque com nfce tudo é possível.. éh cada erro 'desconhecido'... Não vou mudar o que já existe hoje... Só vou limitar mais o tempo na emissão de uma nfce... Em 10 segundos não obteve resposta.. entra em contigência... imprimir o danfe para o cliente e bola pra frente...
Daí esse gerenciador robô a cada período de tempo vai monitorar se existe alguma nfce em contigência, vai travar ela (para o caixa não tentar enviar manualmente naquele momento) e enviar.
No final do dia no fechamento do caixa se tiver cupons ainda não autorizados o caixa toma as devidas providências.
Em clientes que tem somente um pc funcionará basicamente da mesma forma. Nestes clientes hoje já não deixo fechar o caixa se tiver cupons abertos. Então o que o gerenciador robô não conseguir enviar o cliente vai ter que fazer manual.
Vou dar uma pesquisada de como colocar um programa para rodar no tray quando o pc iniciar...
Claro que se alguém já tiver alguma coisa nesse sentido, sinta-se a vontade para mostrar... ficarei muito grato...
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Thread ou novo Programa
Rubens,
Eu tenho um servidor de impressão feito em minigui você pode modificar para o seu uso, esse utilitário roda no systray.
Este utilitário usa a minigui com mingw
Eu tenho um servidor de impressão feito em minigui você pode modificar para o seu uso, esse utilitário roda no systray.
Este utilitário usa a minigui com mingw
- Anexos
-
PrintWin.zip- (2.2 MiB) Baixado 88 vezes
►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)
Thread ou novo Programa
Link da minigui compilada com harbour fork 3.4 + mingw 6.1
http://hmgextended.com/files/CONTRIB/hmg1607-mingw.exe
http://hmgextended.com/files/CONTRIB/hmg1607-mingw.exe
►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)
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Thread ou novo Programa
Então veja:rubens escreveu:Tenho um gerenciador de NFCe em minigui...
Systray...
C:\MiniGUI\SAMPLES\Advanced\CuckooClock\CuckoClock.prg
C:\MiniGUI\SAMPLES\Advanced\SysInfoTray\SysInfoTray.prg
Thread...
C:\MiniGUI\SAMPLES\Advanced\Downloader\download.prg
C:\MiniGUI\SAMPLES\BASIC\WAIT_WINDOW_2\demo2.prg
Executar com o Windows...
C:\MiniGUI\SAMPLES\Applications\TRAY_CALENDAR\TrayCalendar.prg
obs.: procure por WinRun()
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Thread ou novo Programa
Link da minigui compilada com harbour fork 3.4 + mingw 6.1
http://hmgextended.com/files/CONTRIB/hmg1607-mingw.exe
Para o zip que eu postei, é só criar uma pasta MiniguiMingw e descompactar o conteúdo do link acima.
Fica assim:
http://hmgextended.com/files/CONTRIB/hmg1607-mingw.exe
Para o zip que eu postei, é só criar uma pasta MiniguiMingw e descompactar o conteúdo do link acima.
Fica assim:
Código: Selecionar todos
MiniguiMingw
hmg
minigui
►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)