在Silverlight中,无限递归可能会挂起整个浏览器。
public void SomeMethod()
{
RecursingMethod1();
}
public void RecursingMethod1()
{
...
RecursingMethod2();
...
}
public void RecursingMethod2()
{
...
RecursingMethod1();
...
}
调用SomeMethod()
将导致无限递归循环。在.net框架中,将获得System.StackOverflowException
。在Silverlight中它只是挂起浏览器(例如,带有silverlight插件的标签无法关闭,你无法切换到另一个标签,唯一的选择是杀死浏览器)。谷歌浏览器中的沙盒在这种情况下无济于事。
典型情况是从事件处理程序调用事件。
有没有办法让Silverlight抛出System.StackOverflowException
?
对于简单的重新插入,插件/浏览器将崩溃。
如果从事件处理程序浏览器中调用事件挂起。在这种情况下似乎没有真正的递归,只是无限循环吞噬了插件/浏览器资源。它永远不会抛出异常。
答案 0 :(得分:0)
Silverlight插件会抛出一个StackOverflowException,只要耐心等待,它最终会出现。