Gibt es nicht offensichtliche Gefahren bei der Verwendung von Threads in ASP.NET

Dies ist so etwas wie eine Geschwisterfrage andiese Programmierer Frage.

Briefly, wir wollen einige Arbeiten, die sich auf Benutzeranforderungen stützen, "richtig" in den Hintergrund rücken. Die verknüpfte Frage hat mir viele Ideen gegeben, ob wir den Dienstweg gehen sollten, hat aber keine wirklich überzeugenden Argumente geliefert, warum genau wir sollten.

Ich gebe zu, dass für mich die Fähigkeit, das moralische Äquivalent von @ zu t

WorkQueue.Push(delegate(object context) { ... });

ist wirklich überzeugend, also, wenn es nur ein wenig schwierig ist (und nicht von Natur aus nicht funktioniert), bin ich geneigt, mich für den Hintergrund-Thread-Ansatz zu entscheiden.

Also, die Probleme mit Hintergrund-Threads, die mir bekannt sind (im Zusammenhang mit einem AppPool):

Sie können jederzeit sterben, da der AppPool recycelt wirdLösung: Verfolge, wann eine Aufgabe ausgeführt wird, damit sie erneut ausgeführt werden kann *, falls ein neuer Thread benötigt wirdDas ThreadPool wird verwendet, um auf eingehende HTTP-Anfragen zu antworten, sodass bei Verwendung von @ IIS ausgehungert werden kanLösung: Erstellen Sie einen eigenen Thread-Pool, wobei Sie auch die Anzahl der Threads begrenzen.

Meine Frage ist,was fehle ich, wenn überhaupt? Was kann sonst noch schief gehen? Mit Hintergrund-Threads in ASP.NET

* Die Aufgabe in Fragen kann bereits sicher erneut ausgeführt werden, daher ist dies kein Problem.
ǂ Angenommen, wir machen nichts wirklich Dummes, wie Ausnahmen in Hintergrund-Threads zu werfen.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage