2014-07-23 3 views
0

J'essaie d'accéder à la session ASP.Net dans le thread ThreadPool. L'exécution de la page se terminera, mais Thread s'exécutera pendant 5 à 10 secondes de plus.Accès à la session asp.net dans un thread multithread/ThreadPool

code ressemble ci-dessous

Dim tContex As HttpContext = HttpContext.Current 
ThreadPool.QueueUserWorkItem(AddressOf ThreadPoolCallBack, tContex) 

La méthode comme ci-dessous

Public Sub ThreadPoolCallBack(ByVal threadContext As Object) 
    HttpContext.Current = CType(threadContext, HttpContext) 
    Dim userId As Integer = HttpContext.Current.Session("userId") 
    DoProcess() 
End Sub 

Dans la méthode ThreadPoolCallBack Je suis accès capable HttpContext et demande des variables PARAM mais je suis incapable d'accéder aux variables de session que je Suis perdre des sessions. Session devenant Null/Nothing dans HttpContext.Current *.

Existe-t-il un moyen d'accéder aux sessios ASP.Net dans un autre thread.

+0

où mettez-vous la 'ThreadPool.QueueUserWorkItem'? –

Répondre

0

Oui, il y a un moyen.

Passez la variable de session à la place.

code

ThreadPool.QueueUserWorkItem(AddressOf ThreadPoolCallBack, HttpContext.Current.Session) 

Méthode

Private Sub ThreadPoolCallBack(ByVal threadContext As Object) 
    Dim session = CType(threadContext, HttpSessionState) 
    If (session IsNot Nothing) Then 
     Dim userId As Integer = session("userId") 
    End If 
End Sub 
+0

Cela ne va pas fonctionner, car je travaille sur du code existant qui a directement besoin d'accéder à la Session. Je ne peux pas modifier la base de code existante. – nRk

Questions connexes