我想在托管的WebBrowser中调用JavaScript函数。我的JavaScript函数很慢(在UI中没有检索数据或ajax),我想在执行JavaScript函数时使我的WPF接口响应。
答案 0 :(得分:3)
您可以异步调用JavaScript函数(例如,在计时器上),但异步不会假设多线程,该函数仍将完全在主UI线程上执行。并且您不能为此使用单独的线程,因为基础WebBrowser
ActiveX控件是STA COM对象。
如果你真的必须在JavaScript函数中执行冗长的UI更新工作,那么正确的方法是限制更新逻辑并在多个步骤中执行它,每个步骤都是异步的,以保持UI线程的响应。您可以使用setTimer
或jQuery的delay
执行此操作。结构更加结构化的方法是使用jQuery Deferreds,如here所述。
答案 1 :(得分:1)
我们以某种方式解决了我们的问题,可能对其他人有用。 在调用WebBrowser之后,我们在一个新的UI线程中启动一个新窗口,并将我们的新窗口放在上一个窗口(它的线程忙于在WebBrowser中进行JavaScript计算),这样我们就可以以某种方式显示进度条和加载页面在我们的HTML中进行大量绘图。