我正在尝试访问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。
答案 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