【发布时间】:2008-10-14 16:41:44
【问题描述】:
由于这种情况,我生活在噩梦中,我有一个 HttpWebRequest.GetResponse,它不断给我一个 ThreadAbortException,导致整个应用程序崩溃。
在这种情况下,使用 Thread.ResetAbort() 如何避免或至少处理它?
这里有一个粗略的代码示例来解释更多:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://someurl.com/");
HttpWebResponse resp = req.GetResponse();
现在上面的最后一行抛出 ThreadAbortException,这可能是因为请求超时,这很好,但我不想在我的 ASP.NET 2.0 应用程序中获得 ThreadAbortException,因为它会杀死它。 ThreadAborException 不能用 try/catch 捕获,唯一的处理方法是使用 Thread.ResetAbort(),它也有自己的坏影响,它会让线程保持活动状态,只有上帝知道多久。
【问题讨论】:
-
尝试在第 2 行捕获 System.Exception 并查看抛出的 ex 类型。
-
你可以捕获 ThreadAbortException,你只需要正确处理它。完成后,ResetAbort() 是正确的做法。请参阅msdn.microsoft.com/en-us/library/… 了解更多信息。
标签: .net