Ir para conteúdo
Fórum CódigoFonte.net

Rhuan Pablo

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

  1. Opa! Muito obrigado a todos que olharam meu Post! Mas já resolvi a questão! Como eu executava determinados comandos "longos" na Thread, tive que tirar o synchronize na hora de chamar o procedimento no Execute! Assim ele não fica "segurando" o form até que a opção seja realizada! Muito obrigado a todos!
  2. Rhuan Pablo

    Thread para Envio de E-mails

    Olá pessoal! Bom, estou iniciando hj no fórum, e desejo me empenhar em auxiliar no quer for possível! Programo em Delphi a algum tempo, e tenho um conhecimento bem razoável. Bom, mas hj eu preciso de ajuda!! Estou desenvolvendo um sistema de Mailing para minha empresa (envio de e-mails em massa)... para o envio, utilizo uma THREAD para que a aplicação na "congele" durante o envio, ja que são muitos e-mails... Pois bem, mesmo com a THREAD meu programa congela... Ja fiz várias tentativas e nada... Ficaria extremamente agradecido se alguém me ajuda-se! Segue abaixo trecho importante do código: ///EXECUTE DA THREAD/// procedure TMailThread.Execute; var xAnexo, i: integer; begin i2 := 0; with frmMail do begin //Trata a Prioridade da mensagem case cbxPrioridade.ItemIndex of 0 : IdMessage.Priority := mpHigh; 1 : IdMessage.Priority := mpNormal; 2 : IdMessage.Priority := mpLow; end; IdMessage.Subject := edtAssunto.Text; IdMessage.Body := mmMensagem.Lines; if cbxConfirmaLeitura.Checked then IdMessage.ReceiptRecipient.Text := IdMessage.From.Text; // Auto Resposta //Tratando os arquivos anexos for xAnexo := 0 to lbxAnexos.Items.Count-1 do TIdAttachmentFile.Create(idmessage.MessageParts, TFileName(lbxAnexos.Items.Strings[xAnexo])); frmMail.Bar.Position := 0; // frmMail.SMTP.Connect; frmMail.memError.Lines.Add('Iniciando envio de e-mails em massa.'+#13#10+#13#10); end; for I := 0 to frmMail.lbxEnviar.Count - 1 do Synchronize(Send); frmMail.SMTP.Disconnect; frmMail.memError.Lines.Add('Envio de e-mails concluído'+#13#10+#13#10+IntToStr(i2)+' e-mails enviados'); Application.MessageBox('E-mails enviados com sucesso!', 'Confirmação', MB_ICONINFORMATION + MB_OK); end; ///PROCEDURE QUE ATIVA A THREAD///// procedure TfrmMail.Mailing; var ThreadSend: TMailThread; begin ThreadSend := TMailThread.Create(true); ThreadSend.FreeOnTerminate := true; ThreadSend.Priority := tpLower; ThreadSend.Resume; end; Desde já, muito obrigado a todos!
×
×
  • Criar Novo...