000000da`6bbfe880 000007fb`a103d0d4 mscorwks!Thread::UserInterrupt0x30
000000da`6bbfe8b0 000007fb`a11f5699 mscorwks!Thread::UserAbort0x3984d0
000000da`6bbfe9d0 000007fb`997519 mscorwks!ThreadNative::Abort0x169
000000da`6bbfebd0 000007fb`988f835f mscorlib_ni!System.Threading.Thread.Abort(System.Object)0x39
000000da`6bbfec20 000007fb`97e94547 System_Web_ni!System.Web.RequestTimeoutManagerRequestTimeoutEntry.TimeoutIfNeeded(System.DateTime)0xa63d4f
000000da`6bbfec60 000007fb`99772bdb System_Web_ni!System.Web.RequestTimeoutManager.CancelTimedOutRequests(System.DateTime)0x167
…
000000da`6bbff8a0 00000000`00000000 ntdll!RtlUserThreadStart0x21
通过ILSpy查看CancelTimedOutRequests和TimeoutIfNeeded源代码,可以看到进入这个方法并不一定代表有线程会被abort,所以我们要从下面一层抓。最终结论是如果我们想要研究Timeout的ThreadAbortException,我们可以在mscorlib_ni!System.Threading.Thread.Abort上面设置断点抓dump,然后查看堆栈上面的线程,最终找到正在被abort的线程以及相应执行的调用栈信息。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-36730-8.html
杨洋加油
你如果在伊拉克对美国说“关你鸟事”
爱你