3
respostas

Thread fecha após lançar uma exception

Boa tarde a todos,

Gostaria de tirar uma dúvida. É possível uma thread ser finalizada após o lançamento de uma Exception, por exemplo, tenho uma thread que a cada x segundo executa uma função, nesta função é lançada uma execption e tratada dentro de um bloco try/catch é possível que mesmo após o tratamento a thread que estava executando esta função seja finalizada? Desde já agradeço a quem puder ajudar.

atenciosamente,

3 respostas

Oi Wesley,

Sim, através do método Abort();

Veja mais em :

https://www.geeksforgeeks.org/how-to-terminate-a-thread-in-c-sharp/

ou

https://docs.microsoft.com/pt-br/dotnet/api/system.threading.thread.abort?view=netframework-4.8

Abraços e bons códigos.

Acho que tinha entendi errado. Você não queria abortar uma thread e sim entender porque ela está abortando.

Tem como postar o código?

Abs!

Olá Marcos, obrigado por sua resposta. Vou colocar a parte do código. Primeiramente eu tenho um componente BachgroundWorker na minha apliacação:

backworkequip1 = new AbortableBackgroundWorker();
backworkequip1.DoWork += backWorkEquip1_DoWork;
backworkequip1.RunWorkerAsync();

No Metodo "backWorkEquip1_DoWork()" eu chamo uma timer que executa uma tarefa a cada 1s:

 private void backWorkEquip1_DoWork(object sender, DoWorkEventArgs e)
        {
            timer1 = new System.Threading.Timer(new TimerCallback(IniciaEquip1), null, 100, 1000);
        }

O problema esta nesse método IniciaEquip1, é um código bem extenso, vou colocar apenas o principal:

 private void IniciaEquip1()
        {
            try
            {
            //codigo aqui 


            }
            catch (ArgumentNullException)
            {

            }
            catch (System.IO.IOException)
            {

            }
            catch (FormatException)
            {
               //acesso ao banco alimenta log

            }
            catch (OverflowException)
            {
               //acesso ao banco alimenta log

            }

        }

Em algumas partes do código pode ocorrer estas Exceptions, então coloquei rotinas de tratamentos para algumas delas. O que acontece é que em alguns momentos ele entra na rotina de Exception faz o tratamento e simplesmente para de funcionar. Então gostaria de saber se ao entrar na rotina de exception ele entende que deve para a thread ao invés de continuar. Mas uma vez obrigado pela resposta.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software