01. april 2009 - 08:33Der er
3 kommentarer og 1 løsning
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(); }
Tak for det hurtige svar. Jeg er ret ny i Windowsprogrammering, så InvokeRequired skal jeg lige undersøge. Jeg har slet ikke implementeret noget GUI endnu. Koden er et uddrag fra en klasse i mellemlaget, som kompileres til en dll, som GUIen skal referere til... måske jeg skal stikke en delegate ned fra GUIen?
Men hvordan med det underliggende? Ved du, om trådene automatisk "venter" ved client_SendCompleted, iogmed vi snakker eventhåndtering (jeg ved ikke, hvordan eventhåndteringen generelt er implemeteret...)?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.