veaoum Posted October 16, 2012 at 01:05 AM Report #479292 Posted October 16, 2012 at 01:05 AM (edited) Boas!!! Gostava de saber se alguem sabe como correr uma função sem influenciar com a resposta do programa, ou seja, permitir trabalhar pelo programa enquanto ela está a correr. Basicamente tenho um programa para gerir os sócios de uma associação e quero que ele envie mails informativos aos sócios mas gostava que ele fizesse sem atrapalhar com o que eu estou a fazer. É possivel? A função seria esta: titulo = "Validade quase no fim" If BindingSourcesocio.Count > 0 Then While i < BindingSourcesocio.Count If txtemail.Text <> "" Then If enviamail(txtemail.Text, titulo, txtnome.Text, txtdatains.Text, txtdatavalido.Text) <> 4 Then aux2.Insert(txtnsocio.Text, titulo, Today, "Não", "", "Sim") Else aux2.Insert(txtnsocio.Text, titulo, Today, "Não", "", "Não") End If Else aux1.descrevermotivocontacto(titulo & " Não tem email.", txtnsocio.Text) End If BindingSourcesocio.MoveNext() i += 1 End While End If ' fim 'enviar mail para os que estão com quotas em atraso Me.SócioTableAdapter.acabarquotasmail(Me.SociosDataSet.Sócio, aux.dadata, Today.AddDays(1)) titulo = "Quotas em falta" If BindingSourcesocio.Count > 0 Then i = 0 While i < BindingSourcesocio.Count If txtemail.Text <> "" Then If enviamail(txtemail.Text, titulo, txtnome.Text, txtdatains.Text, txtdatavalido.Text) <> 4 Then aux2.Insert(txtnsocio.Text, titulo, Today, "Não", "", "Sim") Else aux2.Insert(txtnsocio.Text, titulo, Today, "Não", "", "Não") End If Else aux1.descrevermotivocontacto(titulo & " Não tem email.", txtnsocio.Text) End If BindingSourcesocio.MoveNext() i += 1 End While End If 'fim 'reenviar emails apos uma semana. Me.ComunicaçãoTableAdapter.reenvia(Me.SociosDataSet.comunicação, Today.AddDays(-7)) If BindingSourcecumonicacao.Count > 0 Then i = 0 While i < BindingSourcecumonicacao.Count Me.SócioTableAdapter.numsocio(Me.SociosDataSet.Sócio, ctxtsocio.Text) If enviamail(txtemail.Text, ctxtmail.Text, txtnome.Text, txtdatains.Text, txtdatavalido.Text) <> 4 Then aux2.reenviado(Today, ctxtdata.Text, "Sim", ctxtid.Text) Else aux2.reenviado(Today, ctxtdata.Text, "Não", ctxtid.Text) End If BindingSourcecumonicacao.MoveNext() i += 1 End While End If 'fim 'enviar mails que tinha falahado na primeira tentativa. Me.ComunicaçãoTableAdapter.Enviaemailfalhado(Me.SociosDataSet.comunicação) If BindingSourcecumonicacao.Count > 0 Then i = 0 While i < BindingSourcecumonicacao.Count Me.SócioTableAdapter.numsocio(Me.SociosDataSet.Sócio, ctxtsocio.Text) If enviamail(txtemail.Text, ctxtmail.Text, txtnome.Text, txtdatains.Text, txtdatavalido.Text) <> 4 Then aux2.reenviado(Today, ctxttentativa.Text, "Sim", ctxtid.Text) Else aux2.reenviado(Today, ctxttentativa.Text, "Não", ctxtid.Text) End If BindingSourcecumonicacao.MoveNext() i += 1 End While End If 'fim ' cria relatório com os socios que não responderam aos mails Me.ComunicaçãoTableAdapter.contactadiferente(Me.SociosDataSet.comunicação, Today.AddDays(-7)) If BindingSourcecumonicacao.Count > 0 Then i = 0 While i < BindingSourcecumonicacao.Count aux1.descrevermotivocontacto(titulo & " Já enviei dois mails.", ctxtsocio.Text) aux2.respondeu(ctxtmail.Text & " Não respondeu a dois mails", ctxtid.Text) BindingSourcecumonicacao.MoveNext() i += 1 End While End If 'fim End If Me.SócioTableAdapter.relatorioparacontactar(Me.SociosDataSet.Sócio) If Me.BindingSourcesocio.Count > 0 Then If MsgBox("Existem sócios para contactar sem ser por mail. Quer imprimir agora a lista?", MsgBoxStyle.YesNo, "Sócios") = MsgBoxResult.Yes Then cantactardiferente.Show() End If O que faz ficar muito lento o envio dos mails prejudicando-me no resto do trabalho. Edited October 16, 2012 at 08:48 AM by ribeiro55
jpaulino Posted October 16, 2012 at 07:29 AM Report #479298 Posted October 16, 2012 at 07:29 AM Podes usar um BackGroundWorker. Vê este exemplo: https://wiki.portugal-a-programar.pt/dev_net/vb.net/backgroundworkers/
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now