这是我想要做的事情:
在不阻塞主线程的情况下,我想使用Awesomium.NET
加载网页,操作DOM并进行一些处理,然后将一些数据返回给主线程。
在我的后台线程中,我创建了一个WebView
(实际上代表了Web浏览器中的一个选项卡),然后订阅了它的LoadingFrameComplete
事件(当WebView
加载了一个给定时触发URL)。然后我开始加载URL。
问题是加载URL并不会阻止当前线程。这意味着在后台线程告诉WebView
加载URL之后,线程结束。
WebView
实际上完成加载URL后,正在侦听LoadingFrameComplete
事件的后台线程不再存在,因此无法进行数据处理。< / p>
这当然意味着没有数据返回到主线程进行显示..
任何建议都将不胜感激。
答案 0 :(得分:0)
感谢Dark Falcon的评论,我找到了解决问题的方法。
事实证明,这就像调用WebCore#Run
和WebCore#Shutdown
一样简单。
创建后台线程并在该线程上创建WebView
,订阅LoadingFrameComplete
事件,初始化网页加载,然后调用WebCore#Run
。
这使线程运行直到调用WebCore#Shutdown
。
在LoadingFrameComplete
事件处理程序中,进行处理,然后调用WebCore#Shutdown
。这会导致线程从调用WebCore#Run
的点恢复。由于它被称为线程中的最后一个东西,线程将退出。