WebBrowser控件/单线程公寓帮助 - .NET

时间:2011-12-13 00:25:36

标签: .net multithreading webbrowser-control

我理解IE WebBrowser控件是一个在单个线程单元中运行的COM对象,因此无法轻松进行线程化。我的问题是,如果两个完全独立的应用程序调用此COM控件,是否每个都获得自己的线程,或者它是否在核心IE引擎的幕后同一线程上处理?

一个例子是我有Test.EXE,除了处理一个非常大的网站之外什么都不做(让我们假设它需要3个单一的线程来处理)。如果我打开这30次,那么所有3个实例仍然可以在单个线程中工作,因此不会真正加快处理30所花费的时间,或者每个实例都会获得自己的IE线程/实例并在理论上处理所有30个实例大约在同一时间处理一个?

我试过测试这个,我添加的线程越多,每个似乎都越慢(甚至在我的处理器接近最大值之前。我的ram甚至不是一小部分)。

2 个答案:

答案 0 :(得分:1)

每个应用程序都在自己的进程中运行,因此将拥有自己的WebBrowser控件副本。他们不能互相干扰。

答案 1 :(得分:1)

WebBrowser控件是IE进程内COM服务器的包装器。这意味着它将被加载到使用它的每个进程中。每个进程都可以使用其主线程与之通信。