Ich bin dabei this tutorial, um E-Mails von meiner Azure-Web-Rolle mit SendGrid zu senden.Senden von E-Mails mit SendGrid auf Azure mithilfe von C# async, warten Sie auf
Dies ist der relevante Teil aus dem Tutorial:
// Create credentials, specifying your user name and password.
var credentials = new NetworkCredential("username", "password");
// Create an REST transport for sending email.
var transportREST = REST.GetInstance(credentials);
// Send the email.
transportREST.Deliver(myMessage);
Es scheint mir, dass die transportREST.Deliver
Funktion synchron ist. Da es IO ausführt, würde ich lieber das neue .NET 4.5 async verwenden, stattdessen auf warten (mein anderer Code ist komplett asynchron). Ist das möglich? Gibt es eine async API für SendGrid oder eine Möglichkeit, den vorhandenen Anruf zu umbrechen?
verfügbar DeliverAsync ist „oder eine Möglichkeit, die bestehende Verbindung zu wickeln“ Sie können nicht synchrone Methode wickeln, um es asynchron. – svick
@svick Ich weiß, aber wenn ich einen neuen Thread für das blockierende Bit und async darauf spawn, könnte dies ein wenig besser sein und mein Server-Thread-Pool, um andere Clients asynchron zu behandeln .. ist das besser als das Blockieren? oder vielleicht haben einige worker thread an das sende dieser blockieren e-mails und fügen sie zu seiner warteschlange. – talkol
Nein, eigentlich wird das nicht helfen. Threads sind relativ schwergewichtig und das Erstellen eines Threads nur für diese eine Operation wird wahrscheinlich Ihre Leistung verschlechtern. Es ist nicht besser danke Blockieren, weil es blockiert. – svick