通过HtmlPage.Window.Invoke()从Silverlight到Javascript的调用是立即返回还是同步?
答案 0 :(得分:1)
从Silverlight代码的角度来看,Invoke是同步的 - 在JavaScript代码返回之前,控件不会返回到Silverlight代码。很容易看到这种情况,因为Invoke
返回一个可以立即使用的值。
您甚至可以在通话过程中以嵌套的方式通过ScriptableMember
从JavaScript回拨到 Silverlight(虽然我不建议像这样来回打乒乓!)
这种同步调用可能会出现问题,而不仅仅是响应性问题 - 可能会出现一些nasty reentrancy issues。我建议保持你从Silverlight调用的JavaScript代码尽可能小,或者设置一个定时器来运行一些代码失败,这样控件就会立即返回到Silverlight,代码将从JavaScript事件循环执行(给出你实际上是一个异步调用。)