I am creating an email software which send email to some accounts. I want to append text every time new email is sent or failed. But textbox shows me report after sending all emails. If the toList is very large like 30+ emails the app screen goes white and after sending all emails GUI comes back with the updated OutPutTextBox. Here is the code inside the SendButton_Click method
foreach (String to in toList)
{
bool hasSent = SendMail(from, "password", to, SubjectTextBox.Text, BodyTextBox.Text);
if (hasSent)
{
OutPutTextBox.appendText("Sent to: " + to);
}
else
{
OutPutTextBox.appendText("Failed to: " + to);
}
}
What you actually want to do is invoke
SendMailasynchronously. There are several ways to do this in .NET 4.0. I recommend starting aTaskobject in yourforeachloop, and scheduling a task continuation for each one to the UI thread:(syntax might be slightly off; I didn’t compile it).