I am trying to embed a WebBrowser Control in a C# Winform Application. This sounds easy enough. However I discovered that the WebBrowser control eats up a lot of memory ever
This worked for meand my app no longer climbs to 500MB ram usage anymore, it stays at 60MB forever. The trick is to set the webbrowser to null after disposing it, and before calling GC.
my program repeatedly goes to the same site, 3 different pages, only once per use, not crawling large numbers of pages or anything.
string eventBuffer;
void GetContracts_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var web = sender as WebBrowser;
if (web.Url == e.Url)
{
TaskMaster.Get_Contracts(ref web);
if(Memory.Contracts.Count==0)
{
eventBuffer="UpdateContractFailed";
web.Disposed += new EventHandler(web_Disposed);
web.Dispose();
return;
}
eventBuffer="UpdateContractList";
web.Disposed += new EventHandler(web_Disposed);
web.Dispose();
}
}
private void web_Disposed(object sender, EventArgs e)
{
WebBrowser web = (WebBrowser)sender;
FireEvent(eventBuffer);
**web = null;**
GC.Collect();
thread.Abort();
}