Silverlight:HtmlPage.Window.Invoke()是否同步?

时间:2012-01-24 00:41:43

标签: javascript silverlight asynchronous invoke

通过HtmlPage.Window.Invoke()从Silverlight到Javascript的调用是立即返回还是同步?

1 个答案:

答案 0 :(得分:1)

从Silverlight代码的角度来看,Invoke是同步的 - 在JavaScript代码返回之前,控件不会返回到Silverlight代码。很容易看到这种情况,因为Invoke返回一个可以立即使用的值。

您甚至可以在通话过程中以嵌套的方式通过ScriptableMember从JavaScript回拨 Silverlight(虽然我不建议像这样来回打乒乓!)

这种同步调用可能会出现问题,而不仅仅是响应性问题 - 可能会出现一些nasty reentrancy issues。我建议保持你从Silverlight调用的JavaScript代码尽可能小,或者设置一个定时器来运行一些代码失败,这样控件就会立即返回到Silverlight,代码将从JavaScript事件循环执行(给出你实际上是一个异步调用。)