在多线程/ ThreadPool线程中访问asp.net会话

时间:2014-07-23 04:47:26

标签: asp.net vb.net multithreading session

我正在尝试访问ThreadPool线程中的ASP.Net会话。 页面执行将完成,但Thread将再执行5-10秒。

代码如下所示

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

下面的方法

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

在ThreadPoolCallBack方法中,我能够访问HttpContext和Request param变量,但是由于我丢失了Sessions,我无法访问Session变量。 会话在HttpContext.Current * 中变为Null / Nothing。

有没有办法在另一个帖子中访问ASP.Net sessios。

1 个答案:

答案 0 :(得分:0)

是的,有办法。

改为传递会话变量。

代码

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

方法

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