`
myoldman
  • 浏览: 84929 次
  • 性别: Icon_minigender_1
  • 来自: 福建福州
最近访客 更多访客>>
社区版块
存档分类
最新评论

关于ThreadAbortException

阅读更多
最近一段时间用spring.net+nhibernate+codesmith做一个国外的项目。
     一开始没有用spring.net的时候都好好的,用上了spring以后,突然发现在vs.net 2005的控制台中出现了很多System.Thread.ThreadAbortException,虽然对程序运行没有什么影响,但总感觉不爽,而且担心会出现thread dead/lock问题。
     于是就在google上搜索,终于找到微软的一个kb里面有提到使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常,里面提到解决方案为
    
对于 Response.End,调用 HttpContext.Current.ApplicationInstance.CompleteRequest 方法而不是 Response.End 以跳过 Application_EndRequest 事件的代码执行。

   
对于 Response.Redirect,请使用重载 Response.Redirect(String url, bool endResponse),该重载对 endResponse 参数传递 false 以取消对 Response.End 的内部调用。例如:
     

   
Response.Redirect ("nextpage.aspx", false);

   
对于 Server.Transfer,请改用 Server.Execute 方法。

    于是回去修改了一下,发现那些个ThreadAbortException果真都不见了。哪个happy啊。
     后来又详细的看了一下那个文章发现最后一段是这样的:
    
   
这篇文章中的信息适用于:
    • Microsoft ASP.NET 1.1 
    • Microsoft ASP.NET 1.0 
   

  
   问题就在于,这个对策是对应于1.x的版本的,我用的是2.x的版本,为什么也会出现这样的问题呢,难道是因为加入了spring.net以后导致了页面调用的时候使用了1.x的api?
   有点不解,请知道的兄弟帮我看看是为什么?
分享到:
评论

相关推荐

    System.Threading.ThreadAbortException(解决方案).md

    项目中碰到的,已解决,写个文档记录一下

    C#多线程之线程控制详解

    Console.WriteLine("ThreadAbortException:{0}", ex.Message); } }); ``` 四、注意事项 需要注意的是,通过Thread.Abort()停止的线程无法直接通过Thread.Start()方法再次启动,必须重新创建一个线程启动。因此...

    【ASP.NET编程知识】ASP.NET实现从服务器下载文件问题处理.docx

    这样可以跳过 Application_EndRequest 事件的代码执行,从而避免出现 ThreadAbortException 异常。 6. Response.Redirect 方法的使用 在 ASP.NET 中,Response.Redirect 方法可以用来重定向到另一个页面。但是,...

    由 TypeInitializationException 引起的问题

    当在执行 webservice 的类型构造 static Webservice(){} 中,用户中断了程序的执行时,下次使用 webservice 的任何方法时,都会抛出 ThreadAbortException 的错误。即使在第一次发生 ThreadAbortException 的错误时...

    Response.Redirect 正在中止线程解决方案

    这两天在开发调试过程中,老是会出现在一个 “正在中止线程“(ThreadAbortException)的例外信息。 例外是由 Response.Redirect 方法产生的,虽然知道是线程的问题, 但是不知为何 Redirect会出现这样的错误,以前是...

    关于C# 多线程学习

    关于C#多线程学习,本篇将深入探讨在C#中如何管理和操作线程,包括启动、停止、暂停线程、调整线程优先级等关键知识点。 ### 启动线程 在C#中,启动一个新线程通常通过`Thread`类实现。创建一个新的线程对象时,...

    实现服务器文件下载,使你一看就明白

    如果使用`Response.End()`,`ThreadAbortException`会被自动捕获,但使用`CompleteRequest()`则不会抛出这个异常,因此在处理错误时需要注意。 总结来说,实现服务器文件下载的关键在于设置合适的HTTP响应头信息,...

    csharp.rar_KProtectProcess_c#保护进程_c#异常终止_c#的Socket终止_保护进程

    接下来,关于C#的异常终止处理,程序可以通过捕获并处理`System.Threading.ThreadAbortException`来防止线程被意外终止。但请注意,这并不意味着可以完全避免进程终止,因为操作系统或调试器仍然可以强制结束进程。 ...

    c#常见错误处理的几种方法

    ThreadAbortException 发生在对 Abort 方法进行调用时。例如,尝试中止线程时,会引发 ThreadAbortException。 39. TypeInitializationException TypeInitializationException 发生作为由类初始值设定时的异常。...

    响应重定向拦截器

    这是因为`Response.Redirect`实际上会引发一个内部的`ThreadAbortException`,立即终止当前请求的执行。然而,这可能导致未完成的工作丢失,或者在某些情况下,不希望立即终止请求。因此,我们可以在`EndRequest`...

    Webcast20050111_PPT.zip

    标题“Webcast20050111_PPT.zip”暗示这可能是一个关于网络研讨会的压缩文件,日期为2005年1月11日,格式为PPT,通常用于演示文稿。该文件可能包含了一次在线讲座或培训的详细内容,特别是与.NET技术相关的主题。 ...

    高效的使用 Response.Redirect解决一些不必要的问题

    我找到了大量的 ThreadAbortException. 这个应用大量的使用了 Response.Redirect (是的 endResponse= true),这个就是可扩展性问题的根源。通过endResponse = false 在Response.Redirect将会解决这个问题. 但这样做会...

    commonservicelocator:Microsoft.Practices.ServiceLocation

    不允许其他任何异常类型(除了诸如ThreadAbortException之类的常规CLR规则外)。 该实现应设计为期望字符串key参数为null,并且必须将此解释为获取所请求类型的“默认”实例的请求。 “默认”的含义取决于基础容器...

    关闭线程Thread 解决进程中的问题

    需要注意的是,如果调用 Thread.CurrentThread.Abort() 方法关闭主线程的话,就会抛出 ThreadAbortException 异常。因此,这种方法不可取。 MSDN 对前台线程和后台线程的解释是:托管线程或者是后台线程,或者是...

    ASP.NET异常类包

    5. ThreadAbortException:线程被系统强制终止时抛出。 6. SqlException:与SQL Server数据库交互时出现的错误,如连接失败、查询语法错误等。 7. UnauthorizedAccessException:访问权限不足,尝试访问受保护资源时...

    C# winform动态创建和关闭多线程源码 可运行

    但这种方法可能会引发ThreadAbortException,且不推荐使用,因为它不提供清理资源的机会。 3. 使用volatile或Interlocked操作来设置一个共享变量,让线程自行检测并优雅地退出。 五、Winform与多线程交互 在Winform...

    多线程,多线程面试题,C#源码.zip

    使用`try-catch-finally`结构可以捕获和处理异常,而`ThreadAbortException`是线程被强制终止时抛出的特殊异常。 线程池是一种优化线程创建和销毁的机制,它管理一组可重用线程,减少系统开销。C#中的`ThreadPool`...

    Windows应用程序关闭时如何中止正在运行的线程

    这是曼弗雷德(Manfred)的补充说明。 :-)当然,您可以使用Thread.Abort,并且在某些情况下应该使用Thread.Abort,但是您... 在所有情况下,您都应处理ThreadAbortException异常。 严格来说,如果这是...的最后阶段...

    线程常用方法示例

    调用`Abort`会引发一个`ThreadAbortException`,线程通常会在处理这个异常时结束。然而,线程可以捕获此异常并进行清理工作。 ```csharp Thread threadToAbort = ... threadToAbort.Abort(); ``` 3. **Join方法...

Global site tag (gtag.js) - Google Analytics