[RESOLVIDO] Thread - Terminate externamente

Pergunte sobre todos os tipos de dúvidas relacionadas ao desenvolvimento de aplicativos Windows, Mac, iOS e Android.

Moderador: hermeson

Avatar do usuário
igorbastosib
Mensagens: 87
Registrado em: 03/Abr/2016, 23:05

[RESOLVIDO] Thread - Terminate externamente

Mensagempor igorbastosib » 10/Abr/2016, 22:55

Gostaria de saber como posso finalizar uma Thread externamente e se possível, caso conheçam outros métodos, me indiquem como melhorar a situação atual:
Contexto:
No sistema (mobile) eu tenho várias estruturas de repetição que não precisam necessariamente que o usuário saibam (imediatamente) de sua execução e nem de seus retornos, então estou executando com Threads, mas algumas eu dou ao usuário a possibilidade de cancelar o processamento, neste caso eu tenho uma tela que é chamada ShowModal pedindo para o usuário aguardar e dando possibilidade de ele cancelar a Thread, gostaria de saber como posso cancelar a Thread com um comando Externo (Terminate), pois qnd tento, diz que não posso cancelar externamente.

Tive que criar uma tela pedindo para o usuário aguardar, mas tbm gostaria de saber se tem alguma coisa já pronta no Delphi onde posso mostrar uma mensagem para o usuário, com uma imagem animada de carregando e dando possibilidade para o usuário cancelar a thread.
Avatar do usuário
Rafael Santos
Mensagens: 64
Registrado em: 12/Mar/2016, 01:38

Re: Thread - Terminate externamente

Mensagempor Rafael Santos » 12/Abr/2016, 23:59

AniIndicator
Avatar do usuário
igorbastosib
Mensagens: 87
Registrado em: 03/Abr/2016, 23:05

Re: Thread - Terminate externamente

Mensagempor igorbastosib » 13/Abr/2016, 11:20

Báh, era isso mesmo!
Alguma dica sobre finalizar uma Thread?
Avatar do usuário
igorbastosib
Mensagens: 87
Registrado em: 03/Abr/2016, 23:05

Re: Thread - Terminate externamente

Mensagempor igorbastosib » 13/Abr/2016, 15:00

Não foi exatamente o que eu queria mas resolvi da seguinte maneira:
Tenho um Form com um AniIndicator avisando ao usuário que está carregando e um botão de cancelar;
Executo a Thread anônima e a cada procedimento valido:

Código: Selecionar todos

if not vThread.CheckTerminated then...

Caso a chamada do FormLoading retorno mrCancel no ModalResult, executo vThread.Terminate;

Desta forma a Thread não executa nenhum bloco a mais e irá ser liberada da memória, pois o padrão de Threads anônimas é FreeOnTerminate True.

Não é exatamente o que eu queria, mas desta forma consigo controlar o retorno para o usuário.

[RESOLVIDO]

Voltar para “Dúvidas Gerais”

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante