阻止Silverlight插件挂起浏览器

时间:2013-03-01 16:23:46

标签: silverlight loops

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

public void SomeMethod()
{
    RecursingMethod1();
}

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

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

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

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

有没有办法让Silverlight抛出System.StackOverflowException

编辑1

对于简单的重新插入,插件/浏览器将崩溃。

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

1 个答案:

答案 0 :(得分:0)

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