ArthurHub / ArthurHub/HTML-Renderer

System.OutOfMemoryException when using HTMLPanel on Multi-Thread Application

Abierto
#73 0 comentarios 0 reacciones 1 asignado Reclamado por @Licshee Ver en GitHub
bug enhancement
Lenguaje dominante
C#
Estrellas
1.4k
Forks
550
Merge medio
14 d 9 h
PR fusionados (30 d)
1

Descripción

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 = "

Hello World

This is html rendered text

";
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.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.