多线程的注意事项

访问HttpContext.Current会返回null

尽量不要用MapPath,HttpRuntime.AppDomainAppPath才是更安全的选择。

答案有二种:
1. 在类型中添加一个字段来保存HttpContext的引用(异步开始前)。
2. 将HttpContext赋值给BeginXXX方法的最后一个参数(object state)

建议优先选择第二种方法,因为可以防止以后他人维护时数据成员被意外使用。

                Task.Factory.StartNew((e) =>
                {
                    System.Web.HttpContext c = e as System.Web.HttpContext;
                },System.Web.HttpContext.Current);    

多线程下获取缓存问题

 多线程下使用HttpContext.Current.Cache.Get(key)获取缓存时HttpContext.Current为null,解决办法如下:

HttpRuntime.Cache.Get(key);

多线程下使用Html转码问题

多线程下使用HttpContext.Current.Server.HtmlEncode(Htmlstring)转码HttpContext.Current为null,解决办法如下:

HttpUtility.HtmlEncode(Htmlstring)

原文地址:https://www.cnblogs.com/Celebrator/p/6991500.html