Além das manipulações explicadas no vídeo, deve levar em conta que:
Um processo é um entorno que tem:
Seu próprio espaço de memória
Suas seleções atuais (uma por tabela)
Suas próprias variáveis (variáveis processos)Possivelmente sua própria interface
etc.
Os processos podem se comunicar entre si de diferentes maneiras:
Variáveis interprocesso
Leitura ou escritura de variáveis
etc.
Eles podem:
Colocar a dormir (sleep process)
Colocar em modo hibernação (suspended process) até que outro processo o acorde.
Um processo só morre quando termina o método que o executa. Não se pode obrigar a um processo a morrer por programação, a pesar de que pode programar para que morra em certas condições (ver o comando CALL PROCESS )
Esta linha de comando deve estar no método. Recomendamos-lhe que utilize o conceito que é mostrado a continuação, economizará tempo e claridade:
C_TEXT($1) If(Count parameters=0) // Se o método não recebe nenhum parâmetro, você deve criar o processo C_LONGINT(<>ProcessNumber) <>ProcessNumber:=New process("Display_Stats2";1024*1024;"Statistics";"Fictitious_Parameter") // criamos o processo Else// Se o método recebe ao menos um parâmetro, deve executar o método de visualização C_LONGINT($Window) //Criar a janela (recipiente) no qual é mostrado o diálogo (conteúdo) $Window:=Open form window("STATS";Plain form window;Horizontally centered;Vertically centered) DIALOG("STATS") //Mostrar o diálogo CLOSE WINDOW($Window) // Uma vez fechado o diálogo, fechar a janela End if
Quando é chamado o método (sem parâmetros), 4D cria um processo no qual é executado um método.
O método é chama a si mesmo (é criado uma segunda instância do método no novo processo)
E se passa um parâmetro:
A primeira instância do método termina
Ainda que o método executado pelo processo continue e apresente o array de estatísticas.
Você pode seguir trabalhando enquanto tenha a janela de estatísticas a seu alcance.
Para traçar a execução de um processo (quando executa a linha New Process), utilize o botão “step-by-step new process”. Este botão executa a linha e abre uma segunda janela de depuração na qual pode seguir o progresso do método executado no processo, independentemente do método de chamada.
Por exemplo, pode criar um processo que mostre a hora e o tempo passado desde que o novo processo começou. Este exemplo lhe dará os fundamentos para a criação de um contador de tempo.
Os processos permitem considerar evoluções rápidas em sua programação:
Pode conceituar seus processos,
testar em várias linhas de código,
logo pode configurar para uma execução independente em um processo.
Há inúmeros exemplos do uso de processos. Este é mais um: você tem que fazer atualizações em um banco de dados importante, no entanto, essas atualizações podem ser atrasadas por vários segundos ou minutos, inclusive sem ter um impacto sobre o desempenho da sua empresa. Assim, você pode:
Prever uma tabela na qual aonde guarde uma lista de tarefas a realizar.
Para cada uma destas tarefas, você especifica uma data, uma hora e possivelmente um nível de prioridade e uma descrição da tarefa a realizar (que? em qual tabela? qual registro? etc.)
Logo, iniciou um processo cuja única missão é consultar esta tabela e realizar o conjunto de tarefas nela.
Quando termina, se suspende até que uma nova tarefa se registre e o processo se reativa.
Esta operação é muito factível em modo cliente/servidor onde um processo (procedimento armazenado) "corre" no servidor e leva a cabo as tarefas a realizar: