Ich bin ziemlich verwirrt als auch welche Methode wird die beste Lösung für mich sein.Beste Lösung zum Ausführen einer asynchronen Methode in Asp.Net MVC Controller?
Ich habe einen Controller, der eine Methode ‚PostEventEmailMessage‘ und innerhalb der Methode ruft nenne ich
// do some work
var queueClient = QueueClient.CreateFromConnectionString(serviceBusConnectionString, queueName);
var sequenceToCancel = queueClient.ScheduleMessageAsync(message, postEventTimeToSendEmail);
queueClient.CloseAsync();
// do remaining work
, wo ich wirklich bin verwirrt ist, die unter Methode die beste ist, um es synchron laufen zu lassen, oder wenn es eine bessere Lösung alle zusammen in Asp.Net MVC? Es scheint, als ob die ersten beiden Optionen Deadlock-Probleme haben, entsprechend den Links, die ich verweise.
Sollte ich 1.
var sequenceToCancel = queueClient.ScheduleMessageAsync(message, postEventTimeToSendEmail).GetAwaiter().GetResult();
2.
var sequenceToCancel = queueClient.ScheduleMessageAsync(message, postEventTimeToSendEmail).Result;
3.
var sequenceToCancel = Task.Run(() => queueClient.ScheduleMessageAsync(message, postEventTimeToSendEmail)).Result;
mein Controller sieht so etwas wie dieses
public ActionResult SaveSpaceEvent(Details details) {
_spaceservice.SaveSpaceEvent(details);
}
dann die 'SaveSpaceEvent' Verfahren wie dieses
public void SaveSpaceEvent(Details, details) {
// do some stuff
_messageService.PostEventEmailMessage(details)
// do more stuff
}
und die Asynchron-Warteschlange Nachricht wird genannt in ‚PostEventEmailMessage sieht '
Sie lesen sollten [Stephen Cleary Blog] (https://blog.stephencleary.com/); o) –
können Sie einen bestimmten Beitrag empfehlen er gemacht, es gibt viele! – user1186050
Alle asynchronen Blogartikel sind lesenswert, aber Sie können mit [Nicht bei Async-Code blockieren] beginnen (https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html) erste –