Hello guys, right now I'm testing the HTMLPanel for my application and it must has multiples threads working together. But actually I'm getting the System.OutOfMemoryException.
After lots of tries and errors, I figure out memory isn't the problem. So here is what I got until now:
When creating a new thread executing the function Application.Run() with inline creation of Form's object, everything goes cool like this:
(new Thread(() => Application.Run(new Form1()))).Start();
the Form1 constructor only creates the HTMLPanel and render something:
public Form1()
{
InitializeComponent();
HtmlPanel Panel = new HtmlPanel();
Panel.Text = "<h1>Hello World</h1><p>This is html rendered text</p>";
Panel.Dock = DockStyle.Fill;
Controls.Add(Panel);
}
But when I first create the object and then I pass the object on a function, I get the error:
Form1 form = new Form1();
(new Thread(() => Application.Run(form))).Start();
Here is the full exception message:
An unhandled exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll
I have no idea what's going on behind the scenes through the windows memory, and if someone's may help me, I will be really grateful. Thanks community, that's a powerful HTML tool for C#.
EDIT:
Well, some weeks ago I discovered the problem happens when trying to access the Panel from another thread, it's a common Cross-Thread exception but since the Panel is inside an form, the Debuger reports a different message.
I solved my problem for a while creating the Form inside the new thread like:
(new Thread(() => CreateForm()).Start();
Then:
CreateForm()
{
Application.Run(new Form1());
}
So if the HTML Renderer's developer sees this Issue, probably the problem it's located on Multi-Thread treatment.
I hope I help with something.