.Net - 什么是“放松”?
-
18-09-2019 - |
题
回答的同时 这 我注意到在处理异常时尝试移动“光标”时出现以下对话框:
无法将下一条语句设置到此位置。尝试展开调用堆栈失败。
在以下情况下无法展开:
- 调试是通过即时调试启动的。
- 放松正在进行中
- 已引发 System.StackOverflowException 或 System.Threading.ThreadAbortException 异常。
到底什么是 放松?
解决方案
这就是我!
不,在这种情况下,它通常指的是在堆栈中逐步(“向后”/“向上”)的过程,删除连续的帧,直到回到所需的级别。典型的堆栈(当然)在结构上非常线性,帧是端到端堆叠的,因此实际上并没有太多字面展开,但这就是它的名称。
这个维基百科页面 有更多细节。
其他提示
展开只是将堆栈移回到堆栈上。
CLR 在此处“展开”堆栈,以便找到带有可以处理异常的 catch 块的方法,即如果当前方法不处理异常,则返回到调用它的方法以查看是否会处理异常。重复此过程,直到找到处理异常的方法或达到应用程序级别错误处理。
这意味着存在错误线程,或者可能是因为堆栈已满并且未创建堆栈帧,CLR 在这种情况下选择 UNWIND 当前上下文。
不隶属于 StackOverflow