2011-02-23 24 views
7

Quando un nuovo thread async è stato generato utilizzando questa firma, l'oggetto di sessione ASP.NET sarà disponibile per questo nuovo thread?Thread e sessione asincroni

IAsyncResult asyncCall = f.BeginInvoke(null, f); 
+0

http://stackoverflow.com/questions/1382791/asp-net-what-to-do-if-current-session-is-null/1382811#1382811 – driis

risposta

5

non so su quale oggetto sessione si sta parlando, ma se si parla di sessione ASP.NET potrebbe non essere disponibile. Inoltre, è una cattiva pratica accedere alla sessione ASP.NET da thread in background. Ti consiglierei di passare un oggetto contenente tutte le informazioni necessarie su questo sfondo invece di averlo estratto da una sessione => lo rende meno riutilizzabile.

Normalmente se il chiamante di questo thread attende che esso completi la sessione dovrebbe essere sempre disponibile, ma onestamente è un cattivo progetto e vorrei semplicemente evitarlo.

+0

Sì, è l'oggetto della sessione ASP.NET I sto parlando. Ed è perché l'oggetto di sessione ASP.NET non è thread-safe? –

+0

Ho riassegnato la tua domanda per renderlo più chiaro. –

+2

E penso che anche se è disponibile all'avvio del thread, potrebbe essere smaltito in qualsiasi momento, sebbene se il chiamante attenderà il completamento dell'attività asincrona prima di uscire, la sessione dovrebbe rimanere attraverso l'attività. –