CAPÍTULO 4
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini



Matar um processo


Alem das propriedades do objeto Process, este oferece um método de grande importância: Kill, o qual permite matar ou acabar com o processo em qualquer momento. Suponhamos que o nosso programa anterior,  a rede é demasiadamente lenta e o usuário decide não esperar e interromper o download. Graças a Kill podemos incluir essa possibilidade em nosso programa, vamos ver como fazer isso.

Adicionamos ao programa anterior um botão chamado BtnCancelar, com o texto Cancelar e com a propriedade Enabled a FALSE, para que inicialmente esteja inativo. Figura 2
Figura 2. BtnCancelar Inativo

O novo código é o seguinte:


PRIVATE hCancelar AS Boolean

PUBLIC SUB BtnDownloads_Click()

DIM hProc AS Process

DIM sUrl AS String

hCancelar = FALSE

BtnCancelar.Enabled = TRUE

sUrl = "http://gambas.gnulinex.org/radiogambas/radiogambas-1.0.1.tar.gz"

hProc = EXEC ["curl", sUrl, "-o", User.home & "/RadioGambas.tar.gz"]

DO WHILE hProc.State = Process.Running

SELECT CASE LblInfo.Text

CASE "|"

LblInfo.Text = "/"

CASE "/"

LblInfo.Text = "-"

CASE "-"

LblInfo.Text = "\\"

CASE "\\"

LblInfo.Text = "|"

CASE ELSE

LblInfo.Text = "|"

END SELECT

WAIT 0.1

IF hCancelar = TRUE THEN

hProc.Kill()

message.Warning("Processo Cancelado")

BtnCancelar.Enabled = FALSE

RETURN

END IF

LOOP

LblInfo.Text = "Inativo"

Message.Info("Download Finalizado")

END

PUBLIC SUB BtnCancelar_Click()

hCancelar = TRUE

END

Dispomos  de  uma  variável  global,  hCancelar,  para  saber  se  o  usuário  pressionou  o  botão Cancelar. Ao iniciar o download, daremos a esta variável o valor FALSE. Se o usuário pressionar o botão BtnCancelar, faz a variável tomar o valor TRUE. Em nosso loop, testamos o valor  de hCancelar e, se for TRUE, matamos o processo com Kill(), retornamos a interface o estado inativo, informamos ou usuário e saímos da subrotina.

Ainda que temos sincronização do processo e podemos acabar com ele a qualquer momento, o feedback que até aqui temos proporcionado ao usuário é algo pobre: a hélice não nos serve para conhecer qual é o estado real do download, nem fazemos ideia quanto mais teremos que esperar.

No entanto, curl está emitindo um informe pela saída padrão de erros stderr (o texto impresso pelo console, se não estivermos familiarizado com esse termo) que podemos aproveitar.






HOME



Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativo sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)