tråde og callbacks/events
Nedenstående kode starter en masse tråde op, som hver sender én email (client.SendAsync(message, nyhedsbrev)). Når hver tråd er færdig, kalder de tilbage til client_SendCompleted i hovedtråden. Spørgsmålet er, om dette er en korrekt arkitektur? Skal man trådsikre client_SendCompleted? Eller ligger der noget kø-håndtering i .NET's event-håndtering, således at man automatisk er sikret mod at trådene falder over hinanden inde i client_SendCompleted?-----------------
public void SendNyhedsbrevTilModtagerne()
{
foreach (KeyValuePair modtager in modtagere.Modtagerliste)
{
using (MailMessage message = new MailMessage(senderEmail, modtager.Value.Email))
{
message.Subject = nyhedsbrev.Subject;
message.Body = nyhedsbrev.Body;
message.IsBodyHtml = true;
SmtpClient client = new SmtpClient();
client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
client.SendAsync(message, nyhedsbrev);
client = null;
}
}
}
void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
throw new NotImplementedException();
}