在侦听来自另一个线程的事件时保持后台线程处于活动状态

时间:2016-03-02 19:16:53

标签: c# .net multithreading events awesomium

这是我想要做的事情:

在不阻塞主线程的情况下,我想使用Awesomium.NET加载网页,操作DOM并进行一些处理,然后将一些数据返回给主线程。

在我的后台线程中,我创建了一个WebView(实际上代表了Web浏览器中的一个选项卡),然后订阅了它的LoadingFrameComplete事件(当WebView加载了一个给定时触发URL)。然后我开始加载URL。

问题是加载URL并不会阻止当前线程。这意味着在后台线程告诉WebView加载URL之后,线程结束。

WebView实际上完成加载URL后,正在侦听LoadingFrameComplete事件的后台线程不再存在,因此无法进行数据处理。< / p>

这当然意味着没有数据返回到主线程进行显示..

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢Dark Falcon的评论,我找到了解决问题的方法。

事实证明,这就像调用WebCore#RunWebCore#Shutdown一样简单。

创建后台线程并在该线程上创建WebView,订阅LoadingFrameComplete事件,初始化网页加载,然后调用WebCore#Run
这使线程运行直到调用WebCore#Shutdown

LoadingFrameComplete事件处理程序中,进行处理,然后调用WebCore#Shutdown。这会导致线程从调用WebCore#Run的点恢复。由于它被称为线程中的最后一个东西,线程将退出。