none
Interrompendo Metodo RRS feed

  • Pergunta

  • Boa dia.

    Essa é a minha primeira vez no fórum e sou iniciante em programação C#

    Em um determinado método o programa entra em um loop infinito onde constantemente é feita uma leitura num servidor ftp e existindo arquivos lá é feito o download desses arquivos.

    Até ai tudo bem, funciona certinho consigo fazer os downloads. O que eu queria é, clicando num botao "Cancelar" esse processo fosse interrompido  e a partir dali eu pudesse ou retornar ao loop ou sair dele.

    Alguém poderia me ajudar ?

    Obrigado

    Alvaro Vieira

    sexta-feira, 8 de fevereiro de 2013 11:32

Respostas

  • olá alvaro, o que você pode fazer é:

    deixar a sua aplicação em 1 Thread separada ( técnica de programação assícrona )

    private Thread ThreadFtp;
    
    public void BtnIniciar_Click( null, null)
    {
        ThreadFtp = new Thread( SeuMetodo );
        Thread.Start();
    }
    
    public void BtnCancelar_Click( null, null)
    {
        Thread.Abort();
    }

    seu método você aplica o seu loop em ftp, é interessante pois chamando de forma assícrona ele divide o uso dos core dos seus processadores

    Abraços,

    Afonso

    • Sugerido como Resposta Vitor Mendes sexta-feira, 8 de fevereiro de 2013 13:30
    • Marcado como Resposta Alvaro Vieira sexta-feira, 8 de fevereiro de 2013 13:37
    sexta-feira, 8 de fevereiro de 2013 12:23

Todas as Respostas

  • olá alvaro, o que você pode fazer é:

    deixar a sua aplicação em 1 Thread separada ( técnica de programação assícrona )

    private Thread ThreadFtp;
    
    public void BtnIniciar_Click( null, null)
    {
        ThreadFtp = new Thread( SeuMetodo );
        Thread.Start();
    }
    
    public void BtnCancelar_Click( null, null)
    {
        Thread.Abort();
    }

    seu método você aplica o seu loop em ftp, é interessante pois chamando de forma assícrona ele divide o uso dos core dos seus processadores

    Abraços,

    Afonso

    • Sugerido como Resposta Vitor Mendes sexta-feira, 8 de fevereiro de 2013 13:30
    • Marcado como Resposta Alvaro Vieira sexta-feira, 8 de fevereiro de 2013 13:37
    sexta-feira, 8 de fevereiro de 2013 12:23
  • Oi Afonso, obrigado pela resposta.

    Esqueci de dizer que uso aplicação windows form.

    Quando atualizo alguma informação do formulário, ocorre uma excessão.

    Porque isso ocorre ??

    sexta-feira, 8 de fevereiro de 2013 13:37
  • por padrão os WindowsForms vem bloqueados a serem acessados por threads assícronas

    use:

    CheckForIllegalCrossThreadCalls = false; //atributo do form: Form.CheckForIllegalCrossThreadCalls = false;

    para conseguir alterar campos da tela.

    sexta-feira, 8 de fevereiro de 2013 13:46
  • Afonso, muito obrigado !!!

    Deu certinho !!!

    Valeu !!!
    sexta-feira, 8 de fevereiro de 2013 15:56
  • Aee !!!

    opa que isso!

    estamos aqui para nos ajudar =D

    abraços !

    sexta-feira, 8 de fevereiro de 2013 16:42