Inquiridor
Tenho uma thread rodando e preciso terminar a thread quando fecha o formulario.

Pergunta
-
Tenho uma thread que executa alguns comandos. Ela é contínua.
Mas preciso termina-la quando eu fechar o formulario, como eu executo esse procedimento?
Porque quando fecho o formulario e abre novamente dá problema por causa da thread aberta.
Alguem pode me ajudar?
Todas as Respostas
-
PS César você pode usar o Task acredito quando voce fechar a aplicação ela será finalizada.
private void button2_Click(object sender, EventArgs e) { var T = new System.Threading.Tasks.Task(() => MeuMetodo()); T.Start(); } private void MeuMetodo() { //Faz alguma coisa }
Testa ai qualquer coisa posta ai de novo. Aqui fala sobre o uso do Task.
att.
- Editado welington jr quarta-feira, 11 de julho de 2012 02:01
-
Para finalizar uma Thread utilize o método Abort(), por exemplo:
Thread thread; //Cria uma thread private void Form1_Load(object sender, EventArgs e) { //Inicializa a thread thread = new Thread(new ThreadStart(Metodo)); thread.Start(); } private void Metodo() { //Seu método } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { try { //Finaliza a thread em execução thread.Abort(); } catch (ThreadAbortException) { //Uma exceção será lançada se o aplicativo for fechado e a thread não tiver sido inicializada, //ou se ela estiver em execução } }
Nesse exemplo eu criei uma Thread chamada thread e a inicializei dentro do evento Load do formulário. Para finalizar a thread você deve inserir o evento FormClosing do formulário e dentro dele você finaliza a thread chamando o método Abort(), que irá lançar uma exceção sempre que a thead for abortada e ainda estiver em execução, por isso o código deve ser inserido dentro de um bloco try/catch
- Editado Edson Rodrigues da Silva domingo, 15 de julho de 2012 20:52
- Sugerido como Resposta AleSaggiorato sábado, 15 de dezembro de 2012 01:37
-
Você pode setar a propriedade dela BackGround como True, dessa forma quando fechar o formulário ela vai finalizar também mas o ideal é fazer como o Edson disse chamando o método abort e usando o try catch.
Bruno Ferreira de Souza
MVP - Microsoft Valuable Professional
MCTS .NET Framework - Windows Applications
MCPD .NET Framework - Windows Applications
www.maestrodotnet.com.br
@BrunoMaestro