Ich versuche, einen Benachrichtigungsdienst (für völlig legitime Nicht-Spam-Zwecke) in .NET mit SmtpClient zu schreiben. Anfangs habe ich einfach jede Nachricht durchgeschleift und gesendet, aber das ist langsam und ich möchte die Geschwindigkeit verbessern. Also, ich wechselte zu ‚SendAsync‘ verwenden, aber jetzt die folgenden Fehlermeldung auf dem zweiten Anruf erhalten:Warum kann SmtpClient.SendAsync nur einmal aufgerufen werden?
An asynchronous call is already in progress.
ich diese Zeilen lesen bedeuten, dass MS System.Net.Mail verkrüppelte Massenmailer zu verhindern. Ist das richtig? Wenn ja, gibt es einen besseren Weg, dies in .NET zu tun, und trotzdem in der Lage zu sein, die Ergebnisse jeder E-Mail zu protokollieren (was für unseren Kunden wichtig ist). Wenn nicht, warum kann SendAsync nur einmal aufgerufen werden?
Hat noch niemand einen solchen Mechanismus implementiert, um mehrere E-Mails gleichzeitig zu senden? oben auf der SMTP-Client-Klasse? klingt wie ein Problem, dem viele Leute begegnen ... irgendwie komisch, dass niemand jemals einen Rahmen dafür geschaffen hat. –
@ItayLevin Ich sehe keinen Bedarf für den Versuch, die SmtpClient-Instanz wiederzuverwenden. Warum nicht einfach jede Instanz für jeden E-Mail-Sendeversuch zuweisen, wie Darin es fachmännisch erklärt hat. – Roman
Dies ist ein [guter Beitrag] (http://www.codeflenzy.net/2012/01/30/how-asynchronous-is-smtpclient-sendasync/) zum Thema. –