Следующий код, запущенный в форме Windows, создает элемент управления WebBrowser и перемещается по нескольким URL-адресам.Каждый раз, когда URL-адрес перемещается к памяти, используемой приложением, увеличивается и, кажется, никогда не освобождается.В моем случае потребляемая память возрастает с ~ 10 Мб до ~ 45 Мб, просматривая только 4 документа.Мне нужно перемещаться по нескольким сотням документов, что быстро приводит к использованию всей физической памяти.
Как освободить ресурсы, используемые элементом управления WebBrowser?
private void ProcessDocs()
{
Random rnd = new Random();
DateTime dtWaitUntil = DateTime.Now;
string[] arrInputUrl = new string[] { "http://www.google.co.uk/", "http://www.google.com/", "http://www.yahoo.com/", "http://www.amazon.co.uk/" };
for (int i = 0; i < arrInputUrl.Length; i++)
{
using (WebBrowser objWebBrowser = new WebBrowser())
{
string txtInputUrl = arrInputUrl[i];
tboxTestingOutput.Text += "\r\n" + txtInputUrl;
objWebBrowser.ScriptErrorsSuppressed = true;
objWebBrowser.Navigate(txtInputUrl);
//Should do this a better way, but, wait 10 secs for document to complete.
//Would use objWebBrowser.DocumentCompleted event
//but it seems to fire several times per document load!!!
dtWaitUntil = DateTime.Now.AddSeconds(10);
do
{
Application.DoEvents();
} while (DateTime.Now < dtWaitUntil);
//Do whatever I need to with the document contents
//...
//...
}
}
tboxTestingOutput.Text += "\r\nFinished";
}