• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Revolt

[VB.NET 2005]Cancelar uma thread

9 mensagens neste tópico

Boas.

O que eu queria era saber se existe um comando que possa cancelar uma thread que está presa num determinado método.

Por exemplo:

Tenho um backgroundworker onde está a correr um método GetFiles() que vai buscar os ficheiros de um certo grupo de pastas.

Se tivesse lá um For() em vez do método Get Files() era só meter um if a verificar a propriedade CancelationPending e depois se fosse True meter o comando ExitSub. Contudo, no exemplo acima descrito isso não dá  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Como é que eu faço para cancelar esta thread quando carrego no botão cancelar?


Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork

For each file as String in My.Computer.Filesystem.GetFiles(Path)

Text = Text & file & Controlchars.Crlf

Next

End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já. O que isso faz é mudar a propriedade CancellationPending do thread para True e depois tinha que adicionar uma coisa tipo isto ao for:


If thread.CancellationPending = true Then

Exit Sub

End If

O problema é que quando ele chega ao GetFiles e começa a buscar todos os ficheiros da pasta seleccionanda, ele não avança no for() até acabar de os ir buscar e portanto não dá para o fechar desta maneira :/

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então como é que o deveria fazer?

EDIT: Acho que já sei o que tavas a dizer que está mal. Devia escrever a thread programaticamente em vez de usar o Backgroundworker?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não só...usa as threads normais

também me referia ao código de ler os ficheiros

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora