我有一个问题,如果在共享函数中访问httpcontext而不传入httpcontext作为参数是线程安全的吗?
我的问题是:util类中的2个函数是否同样是线程安全的?
Class foo
Sub main()
Dim qs1 = util.getQS(HttpContext.Current)
Dim qs2 = util.getQS()
End Sub
End Class
Class util
Shared Function getQS(hc As HttpContext) As String
Return hc.Request.QueryString.ToString
End Function
Shared Function getQS() As String
Return HttpContext.Current.Request.QueryString.ToString
End Function
End Class
编辑
我在最初的研究中发现了一篇SO帖子,也有一些很好的答案
感兴趣:
HttpContext.Current.Response inside a static method
答案 0 :(得分:3)
问题中的两个函数在线程安全性方面是等效的。
虽然HttpContext
不是线程安全的,但获取对HttpContext.Current
的引用是线程安全的。通常,每个请求HttpContext
对象缺少线程安全性不是问题,因为一次只有一个线程处理给定的请求。
但是,如果您有引用HttpContext.Current
的后台工作线程等,它可能会成为一个问题。
答案 1 :(得分:0)
简短的回答是否定的。有关更多详细信息,请参阅此问题及其答案:Using an HTTPContext across threads