- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在调用绑定(bind)到 WPF Web 浏览器控件的 ObjectForScripting 上的方法时,网页 UI 锁定出现奇怪的问题。进一步的调查使我们意识到整个 UI(包括 WPF 应用程序而不仅仅是 Web 浏览器)都被锁定。
使用的技术是 WPF w/Caliburn.Micro 和 Autofac。我使用 COM 可见类上的方法来推送到 Caliburn.Micro 提供的事件聚合器。当进行此调用时,网页会锁定,即使我们调用 PublishOnBackgroundThread 并且该事件的处理程序会立即启动一个新线程。
脚本对象:
[ComVisible(true)]
public class ScriptBridge
{
public void messageHost(string eventName, string eventPayload)
{
events.PublishOnBackgroundThread(new MessageFromUi(eventName, eventPayload));
}
}
处理程序
public void Handle(MessageFromUi message)
{
Task.Factory.StartNew(() => { var result = ComObjectCall(); /* do more processing */ });
}
我可以提到的一件事是,在新线程的操作中,它确实调用了另一个 COM 对象。当我用 10 秒延迟替换此 COM 调用时,UI 不会锁定。
此外,我尝试使用 Task.Run 和更明确的创建 Thread 对象。
不幸的是,我无法直接从 JavaScript 调用 COM 对象(在处理程序内)。
最佳答案
好吧,我找到了答案,事实证明我正在 UI 线程上初始化 COM 对象(与设备交互的对象),当我调用 COM 对象中的方法时,它正在 UI 上运行线程。
将 COM 对象的声明移至同一线程内会有所帮助。
顺便说一句,创建 COM 对象和一个单独的线程,然后在单独的线程上调用该方法也很有效。
感谢所有查看这些问题的人。
关于javascript - WPF WebBrowser 甚至在使用 ObjectForScripting 的单独线程上锁定 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35423403/
在 .NET WebBrowser 控件中,有一个名为“ObjectForScripting”的属性。当您在 Javascripts 中调用 window.external 时,它会调用 .Net 代
我已按照本教程将 WebKitBrowser 对象添加到我的 Visual Studio C# 2010 工具箱中: http://webkitdotnet.sourceforge.net/basic
据我所知,我们可以从 Javascript 调用 C# 函数,它在 WebBrowser 控件中加载,下面的代码显示了我通常是如何做的。 Form1.cs public partial class F
我有一个 WinForm,它通过 ObjectForScripting 与 WebBrowserControl 交互。我的 WinForm 的基类不是 ComVisible,我不能也不会更改它。因为有
我知道为 WebBrowser 控件提供的 ObjectForScripting 属性,它是为 WinForms 应用程序提供的。我在智能设备应用程序中使用 WebBrowser 控件。我找不到此属性
在调用绑定(bind)到 WPF Web 浏览器控件的 ObjectForScripting 上的方法时,网页 UI 锁定出现奇怪的问题。进一步的调查使我们意识到整个 UI(包括 WPF 应用程序而不
有没有办法确定 WPF WebBrowser 控件的 ObjectForScripting 属性是否已通过在所述控件中运行的 javascript 设置?或者,有没有办法确定 ObjectForScr
我正在尝试从 WPF 浏览器控件网页捕获点击事件。我创建了一个 ObjectForScriptingHelper 类: [PermissionSet(SecurityAction.Demand, Na
提前致谢。 在我的应用程序中,我将 WebBrowser 控件替换为 Microsoft 的 WebView2 . 我想知道 WebView2 中 WebBrowser 控件的以下成员的等价物。 We
我正在尝试使用 WPF WebBrowser 控件在 C# 和 JavaScript 之间建立互操作。到目前为止,C#->JavaScript 调用运行良好,但我无法运行 JavaScript->C#
我是一名优秀的程序员,十分优秀!