我在一个单独的线程上做一些异步工作使用:
ThreadPool.QueueUserWorkItem()
在这个单独的线程中,我需要调用HttpContext.Current,以便我可以访问:
HttpContext.Current.Cache HttpContext.Current.Server HttpContext.Current.Request
但是,当我创建这个单独的线程时,HttpContext.Current为null。
题
如何创建一个新的线程,使HttpContext.Current不为空?还是有另一种方式可以访问缓存,服务器和请求对象?
解决方法
我试着不要对依赖于ASP.NET堆栈的对象(如HttpContext)的引用。如果你需要在一个不同的线程中做一些工作,那是因为你不想在ASP.NET中等待,直到你的任务完成。也可能在您的线程没有时终止请求/上下文/会话。
您应该传递一个对象,其中包含您的线程所需的数据。