none
Tenho uma thread rodando e preciso terminar a thread quando fecha o formulario. RRS feed

  • 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?

    terça-feira, 10 de julho de 2012 11:33

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
    quarta-feira, 11 de julho de 2012 01:42
  • 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


    domingo, 15 de julho de 2012 20:51
  • 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

    segunda-feira, 16 de julho de 2012 02:55