La mia applicazione gestisce le vendite di un negozio, quando termino le operazioni di vendita di determinati clienti invia una mail alla loro casella ringraziandoli dell'acquisto fatto.
Per inviare mail uso la segente routine :
(I msgbox servono in fase di progettazione solo per verificare il funzionamento)
Per avviare questa routine però vorrei utilizzare un thread in modo da poter essere subito pronto per la vendita successiva senza dover aspettare l'invio della mail.codice:Sub InviaMailFidelizzazione() Try MsgBox("Inizio delle operazioni del thread") Dim message As New Net.Mail.MailMessage(My.Settings.FidelizzazioneQMAILMITTENTE, Form18.Label21.Text, My.Settings.FidelizzazioneQOGGETTO, My.Settings.FidelizzazioneQTESTOMAIL & ElencoPrFidel) MsgBox(1) Dim emailClient As New Net.Mail.SmtpClient(My.Settings.FidelizzazioneQSMTP) MsgBox(2) emailClient.Send(message) MsgBox(3) ElencoPrFidel = "" MsgBox("Operazioni del thread eseguite con successo") Catch ex As InvalidOperationException 'MessageBox.Show("Non è stato specificato il nome Host del server") Catch ex As SmtpFailedRecipientException 'MessageBox.Show("Tentativo di invio al server locale, ma non è presente una mailbox") Catch ex As SmtpException 'MessageBox.Show("Utente non valido/Host non trovato/Altro errore in fase di invio") Catch ex As Exception 'MessageBox.Show(ex.ToString) 'LocalError("FormFx1Load") End Try End Sub
Il codice per avviare il Thread è il seguente:
Il problema è che non vengono eseguite tutte le operazioni indicate nella routine.codice:MsgBox("Avvio del thread") Dim T As New Threading.Thread(AddressOf InviaMailFidelizzazione) T.Start() MsgBox("Thread avviato correttamente")
In termini di msgbox vengono visualizzati solo i seguenti:
1.MsgBox("Avvio del thread")
2.MsgBox("Thread avviato correttamente")
3.MsgBox("Inizio delle operazioni del thread")
Secondo voi dove sbaglio?
Grazie per l'attenzione

Rispondi quotando