wpf - 是否可以从 WPF 应用程序异步调用 WebBrowser.InvokeScript?

标签 wpf webbrowser-control

我想在托管的 WebBrowser 中调用 JavaScript 函数。我的 JavaScript 函数很慢(在 UI 中不检索数据或 ajax),我想让我的 WPF 界面在执行 JavaScript 函数时响应。

最佳答案

您可以异步调用您的 JavaScript 函数(例如,在计时器上),但异步不假定多线程,该函数仍将完全在主 UI 线程上执行。并且您不能为此使用单独的线程,因为底层 WebBrowser ActiveX 控件是一个 STA COM 对象。

如果您真的必须在 JavaScript 函数中执行冗长的 UI 更新工作,那么正确的做法是限制更新逻辑并分多个步骤执行,每一步都异步执行,以保持 UI 线程响应。您可以使用 setTimer 执行此操作或 jQuery 的 delay .如 here 所述,一种结构更完善的方法是使用 jQuery Deferreds。 .

关于wpf - 是否可以从 WPF 应用程序异步调用 WebBrowser.InvokeScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20496884/

相关文章:

.net - Winforms WebBrowser 告诉何时完成刷新

c# - 如何从 Web 浏览器控件设置纸张大小和边距打印

c# - dotMemory快照导致wpf崩溃

javascript - 如何禁用 WebBrowser 控件中的 JavaScript 警告?

javascript - 在 C# Web 浏览器中使 javascript 变量全局作用域

c# - 从 c++ dll 中的线程回调更新 WPF 图像源

c# - 为什么在没有安装 VS.NET 的情况下 C# winforms 应用程序无法运行?

c# - 为什么 ICommand 对象必须公开才能在 WPF 中正常工作?

c# - 如何制作具有透明背景的禁用 RichTextbox?

c# - 将 ViewModel 中包含的 ObservableCollection 绑定(bind)到 ListView