Questa è una domanda di pari livello a this programmers question.Esistono pericoli non ovvi nell'utilizzo di thread in ASP.NET?
In breve, stiamo cercando di spingere un po 'di lavoro che è stato supportato da porzioni di utenti in background "correttamente". La domanda collegata mi ha dato molte idee se dovessimo seguire il percorso del servizio, ma non abbiamo davvero fornito argomenti convincenti sul perché, esattamente, dovremmo.
Devo ammettere che, per me, la possibilità di fare l'equivalente morale di
WorkQueue.Push(delegate(object context) { ... });
è davvero convincente, quindi se è solo un po 'difficile (piuttosto che intrinsecamente impraticabile) Sono incline ad andare con l'approccio del thread in background.
Quindi, i problemi con thread in background io sappia (nel contesto di un AppPool):
- Possono morire in qualsiasi momento, a causa della AppPool essere riciclato
- Soluzione: monitorare quando viene eseguita un'operazione, in modo che possa essere eseguito ri-* dovrebbe essere necessario un nuovo filo
- Il ThreadPool viene utilizzato per rispondere alle richieste HTTP in arrivo, in modo da utilizzare può fame IIS
- Soluzione: creare il nostro pool di thread, limitando anche il numero di thread.
La mia domanda è, quello che mi sto perdendo, se non altro? Cos'altro può andare storto? Con thread in background in ASP.NET?
* L'attività in questione è già sicura da rieseguire, quindi questo non è un problema.
ǂ Supponiamo che non stiamo facendo nulla di veramente stupido, come lanciare eccezioni nei thread in background.
non sono la maggior parte dei 'pericoli' threading non ovvio ?? –
@ Mitch - Sto cercando quelli peculiari di ASP.NET. Quei pericoli dei pedoni possono essere ignorati per ora, :) –