asp.net web 环境下使用多线程,对象为NULL,容易使IIS 应用程序池崩溃
很多时候需要一个线程异步执行
ThreadPool.QueueUserWorkItem(TryCreateDataAsync, info);
大多数时候我这样异步执行一个任务
在这种情况下
TryCreateAndSaveData 这个方法 里面经常出现错误,致使IIS 应用程序池崩溃
报错提示:this.storeDataList.Add(info.Store, outdata); 对象为null
void TryCreateDataAsync(object o)
{
RequestInfo info = o as RequestInfo;
//创建并存储缓存
Store.StoreData outdata = null;
TryCreateAndSaveData(info, out outdata);
}
bool TryCreateAndSaveData(RequestInfo info, out Store.StoreData outdata)
{
outdata = CreateData(info);
if (outdata != null)
{
//存入store
if (outdata.Seconds > 0 && outdata.BodyData.Length >= 0)
{
this.storeDataList.Add(info.Store, outdata);
}
return true;
}
return false;
}
草惊人生凉
11 years, 10 months ago
Answers
如果线程池工作项抛出了一个未处理异常,那么 CLR 将通过正常的未处理异常策略来确定该采取什么操作。在不存在外部宿主的情况下,例如 SQL Server 或者 ASP.NET,进程将崩溃。
秋月airi
answered 11 years, 10 months ago