0

在 Silverlight 中,无限递归可能会挂起整个浏览器。

public void SomeMethod()
{
    RecursingMethod1();
}

public void RecursingMethod1()
{
    ...
    RecursingMethod2();
    ...
}

public void RecursingMethod2()
{
    ...
    RecursingMethod1();
    ...
}

调用SomeMethod()会导致无限递归循环。在 .net 框架中,您将获得System.StackOverflowException. 在 Silverlight 中,它只是挂起浏览器(例如,带有 silverlight 插件的选项卡无法关闭,您无法切换到另一个选项卡,剩下的唯一选项就是杀死浏览器)。谷歌浏览器中的沙盒在这种情况下没有帮助。

典型的情况是从事件处理程序调用事件。

有什么方法可以让 Silverlight throwSystem.StackOverflowException吗?

编辑 1

对于简单的 resursion 插件/浏览器将崩溃。

如果从事件处理程序调用事件,浏览器会挂起。在这种情况下似乎没有真正的递归,只是吞噬插件/浏览器资源的无限循环。它永远不会抛出异常。

4

1 回答 1

0

Silverlight 插件会抛出 StackOverflowException,耐心等待它最终会出现。

于 2013-03-01T19:51:01.717 回答