在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启

摘要:
重新启动可能是由应用程序中的错误引起的。在执行回调函数期间发生了未处理的异常,以及中的未处理异常。NET Framework 2.0导致基于ASP.NET的应用程序意外退出(http:ThreadPool.QueueUserWorkITE的回调函数中发生未处理的异常导致应用程序重新启动。


用户登陆Session丢失,可能是因为应用程序发生错误而导致重启。这次遇到这情况是由于使用了ThreadPool.QueueUserWorkItem,
其中回调函数执行时发生未处理的异常,导致了ASP.NET 应用程序意外退出。参考:在 .NET Framework 2.0 中未处理的异常导致基于 ASP.NET 的应用程序意外退出(http://support.microsoft.com/kb/911816/zh-cn

例子:

在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启第1张在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启第2张Code
protected void Page_Load(object sender, EventArgs e)
{
    ThreadPool.QueueUserWorkItem(
new WaitCallback(ThreadWork), new ThreadArg(fpath, content));
}
public static void ThreadWork(object state)
{
            
    
//如果路径不存在,CFile.Write就会抛出异常,在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启,Session丢失,解决办法当然有很多,最简单就是加入try catch 罗
        CFile.Write(((ThreadArg)state).Path, ((ThreadArg)state).Content);
}
public class ThreadArg
{
    
private string path;

    
public string Path
    {
       
get { return path; }
       
set { path = value; }
    }
    
private string content;

    
public string Content
    {
       
get { return content; }
       
set { content = value; }
    }
    
public ThreadArg(string path, string content)
    {
        
this.path = path;
        
this.content = content;
    }
}

免责声明:文章转载自《在ThreadPool.QueueUserWorkIte 的回调函数中发生未处理异常导致了应用程序重启》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【问题记录】IIS配置项IOS CoreData 多表查询(下)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

sklearn-SVC实现与类参数

sklearn-SVC实现与类参数 SVC继承了父类BaseSVC SVC类主要方法: ★__init__() 主要参数: C: float参数 默认值为1.0 错误项的惩罚系数。C越大,即对分错样本的惩罚程度越大,因此在训练样本中准确率越高,但是泛化能力降低,也就是对测试数据的分类准确率降低。相反,减小C的话,容许训练样本中有一些误分类错误样本,泛化能力...

字符设备驱动程序框架

字符设备包含:设备号(dev_t),设备(cdev),file_operation 。 创建一个字符设备的流程: 0 创建一个字符设备,可以是静态定义或者动态申请; 1 首先要得到一个设备号,可以是静态定义或者动态申请; 2 把写好的file_operation 并保存到 cdev,实现cdev的初始化; 3 使用cdev_add()注册cdev,告诉内...

C#中的Session

一: 网站开发中,为了保存用户信息我们就会用到session。 Session具有以下特点:(1)Session中的数据保存在服务器端;(2)Session中可以保存任意类型的数据;(2)Session默认的生命周期是20分钟,可以手动设置更长或更短的时间。 我们在aspx页面中的调用一般只需要这么写:<%=session["key"]=value...

jmeter垮线程组设置全局变量(传递参数)

全局变量是指可以跨线程组调用。 第一种方式:通过函数助手__setProperty  设置 ,调用的时候直接用函数助手中__property获取变量。  生成:${__setProperty(newordertime1,${cancelEndTime},)};   获取:${__property(newordertime1)}  第二种方式:使用Bea...

关于 SetProcessWorkingSetSize 和内存释放

在应用程序中,往往为了释放内存等,使用一些函数,其实,对于内存操作函数要谨慎使用,比如大家常常想到的 SetProcessWorkingSetSize,其实对于windows来说,系统会自动在程序闲置时(如程序被最小化)释放内存的,自己用内存释放 时,往往会造成一些莫名的内存错误,造成自己的应用程序及系统不稳定。 具体原理有人已经写得很清楚了,以下为转帖的...

C语言获取系统错误

目录 一、strerror函数 二、errno的细节 1、调用库函数失败不一定会设置errno 2、errno不能作为调用库函数失败的标志 3、程序员可以不用errno 三、课后作业 四、版权声明 我们在写程序的时候需要调用C语言提供的库函数,并通过函数的返回值判断调用是否成功。其实在C语言中,还有一个全局变量errno,存放了函数调用过...