You can use background worker component provide by .net framework for creating threads and thus you can create a class which sends out emails in a diffrent thread while you continue with your execution.
An example of sort,
<br />
Public Class Email<br />
<br />
Private EmailWorker As New ComponentModel.BackgroundWorker<br />
<br />
Public Sub SendEmailsAsync() <br />
EmailWorker.WorkerReportsProgress = True<br />
AddHandler EmailWorker.DoWork, AddressOf EmailWorker_DoWork<br />
AddHandler EmailWorker.ProgressChanged, AddressOf EmailWorker_ProgressChanged<br />
AddHandler EmailWorker.RunWorkerCompleted, AddressOf EmailWorker_Completed<br />
EmailWorker.RunWorkerAsync()<br />
End Sub<br />
<br />
Private Sub EmailWorker_Completed(sender As Object, e As ComponentModel.RunWorkerCompletedEventArgs)<br />
' Anything you wish to do after all the emails are sent <br />
End Sub<br />
<br />
Private Sub EmailWorker_ProgressChanged(sender As Object, e As ComponentModel.ProgressChangedEventArgs)<br />
' Progress i.e if you wish to have any logging after each email or somthing similar <br />
End Sub<br />
<br />
Private Sub EmailWorker_DoWork(ByVal sender As Object, ByVal e As EventArgs)<br />
' Write Your Code to Send Emails <br />
EmailWorker.ReportProgress(1,string message )<br />
End Sub<br />
<br />