private async void ConsultaCNPJ() { // VERIFICO AQUI OS CAMPOS PARA NAO RECARREGAR O CAPCHA NOVAMENTE // A VALIDACAO É FEITA TAMBEM DENTRO DE ConsultaCNPJReceita.Consulta(); PARA CASO O USUARIO NAO IMPLENTE ISSO NO FORMULARIO if (ConsultaCNPJReceita.ValidaCampos(txtCNPJ.Text, txtLetras.Text) == false) { MessageBox.Show(ConsultaCNPJReceita.Mensagem); return; } await Task.Run(() => // EXECUTA O MÉTODO EM UMA NOVA TASK, NAO TRAVANDO A TELA QUANDO O SERVIÇO NAO ESTA DISPONIVEL OU ESTA MUITO LENTO { BloqueiaBotaoConsultaCNPJ(true); //BLOQUEIA O BOTAO E EXIBE MENSAGEM CARREGANDO NO BOTAO if (ConsultaCNPJReceita.Consulta(txtCNPJ.Text, txtLetras.Text)) { CarregaDadosNoFormulario(); } else { MessageBox.Show(ConsultaCNPJReceita.Mensagem); } BloqueiaBotaoConsultaCNPJ(false); // RETORNA O BOTAO AO NORMAL CarregaCaptcha(); // APÓS UMA CONSULTA, RECARREGA CAPTCHA NOVAMENTE. }); }
private async void CarregaCaptcha() // METODO ASYNC (ASSINCRONO) // PARA NAO TRAVAR O FORM QUANDO DEMORAR { LimpaCamposCaptcha(); // EM MEUS TESTES, APÓS ALGUMAS CONSULTAS A RECEITA BLOQUEOU O IP, MESMO ACESSANDO PELO SITE DA RECEITA. NAO FUNCIONOU ATÉ REINICIAR A INTERNET. // DESSA FORMA CONSEGUI IMPLEMENTAR ROTINAS DE QUANDO O SERVIÇO FICA LENTO OU É BLOQUEADO // PARA BLOQUEAR O SEU IP NA RECEITA, BASTA CLICAR DIVERSAS VEZES NO BOTAO TROCAR IMAGEM. A CONSULTA VAI DEMORAR PARA DAR RETORNO DE ERRO DEVIDO AO BLOQUEIO. // PORÉM, CONFORME O MODO ASSINCRONO IMPLEMENTADO ABAIXO, O SISTEMA NÃO FICARÁ TRAVADO ENQUANTO A CONSULTA NAO RETORNA NADA. await Task.Run(() => // EXECUTA O MÉTODO EM UMA NOVA TASK, NAO TRAVANDO A TELA AO INICIAR QUANDO O SERVIÇO NAO ESTA DISPONIVEL OU ESTA MUITO LENTO { BloqueiaBotaoTrocaImagem(true); // BLOQUEIA O BOTAO E EXIBE MENSAGEM CARREGANDO NO BOTAO // SIMPLESMENTE CARREGA A IMAGEM NO PICTUREBOX INFORMADO if (ConsultaCNPJReceita.GetCaptcha(picLetras) == false) { MessageBox.Show(ConsultaCNPJReceita.Mensagem); // MENSAGEM SE TIVER ERRO } BloqueiaBotaoTrocaImagem(false); // RETORNA O BOTAO AO ESTADO ORIGINAL }); }