Página 1 de 1

Disparar um processo

Enviado: 08 Dez 2008 11:54
por evaldowl
ola amigos,

estou com uma necessidade que não consegui imaginar como fazer.

preciso disparar uma atualizacão diaria que nada mais é que um laço while ! eof() e dentro desse laço atualiza alguns campos.
Acontece que não queria fazer por fora da aplicação e sim dentro mais sem ser atrave s de uma opção do menu, tipo determinado usuario se loga no sistena e dispara o processo, mais o importante é que fique transparente para o usuario, ele continua com sua operação do sistema normalmente, pois o processo demora uns 5 minutos.
Alguem ve alguma forma de se fazer isso?

uso clipper e xharbour.

Obrigado.

Re: Disparar um processo

Enviado: 08 Dez 2008 17:10
por Maligno
Uma das formas é fazer a checagem da necessidade de disparar o gatilho quando executando a função Inkey(). Você criaria uma função com outro nome, por exemplo GetKey(), e de tempos em tempos ela verificaria a necessidade. Claro que, ao final da execução, essa função chamaria a velha InKey() com os mesmos argumentos.

Uma outra possibilidade é você utilizar uma função que rode em background, e que faça esse trabalho ao mesmo tempo em que o programa roda. Há duas bibliotecas com funções do tipo: a NanForum ToolKit (função FT_OnTick()), que tenho no meu site e uma outra chamada BGEvents, cujo arquivo (bgev5.zip) pode ser baixado do site The Oasis. Detalhes no ZIP.

Re: Disparar um processo

Enviado: 09 Dez 2008 11:36
por ANDRIL
Quando precisei usar algo em segundo plano, usei a BGEvents. Porem, se for para executar alguma tarefa como um loop, acho que nao ficara bom.

A tarefa principal (primeiro plano) e a(s) tarefa(s) em segundo dividem o processamento do sistema (clipper), ou seja, numa operação de loop, o sistema ficara preso até que o loop termine. Os Eventos são disparados conforme o intervalo de tempo definido, mais, só voltam ao principal quando a função terminar. Enquanto isso, creio que usuário não conseguira trabalhar, pois acho que a tela principal irá travar.

Não ocorre como vc abrir o sistema principal no Windows e depois abrir outro aplicativo em outra janela ( mesmo assim o windows deixara sua aplicação principal mais lenta ).

De qualquer forma não custa tentar.

Ate+

Re: Disparar um processo

Enviado: 09 Dez 2008 11:46
por Maligno
Esse esquema de código rodando em background é realmente muito bom mas, como o Clipper não trabalha com threads, se ficar muito carregado, pode muito bem "amarrar" o programa, causando uma lentidão.