i'm having a memory leak problem with your component and i think i found the cause...
I have a form that is loading documents/images to be checked by a user.
Each time i have a new document i load it like this:
Code: Select all
imgViewer.DisplayFromStream(mydocumentStream);
imgThumbs.LoadFromGdViewer(imgViewer)
...
I discovered that, in thumbnailex, you create new delegates and assign it to the gdviewer object events - PageChanged and DocumentClosed.
The thing is that the code you have is producing a common memory leak while using this event plumbing...
So, in my case, gdviewer PageChanged and DocumentClosed gets a lot of refs that are never release causing it to never be freed and so is thumbex.
After removing the imgthumbs i no longer had the mem leaks.
my sugestion is:
int your code, somehow in the middle of LoadFromGdViewer(GdViewer GdViewer), instead of just doing..
Code: Select all
GdViewer.PageChangedEventHandler h1= new GdViewer.PageChangedEventHandler(mypagechanged);
GdViewer.DocumentClosedEventHandler h2= new GdViewer.DocumentClosedEventHandler(mydocumentclosed);
if (alreadylinked)
{
gdviewer.PageChanged -= h1;
gdviewer.DocumentClosed -= h1;
}
gdviewer.PageChanged += h1;
gdviewer.DocumentClosed += h1;
So i think it buggy..
you guys could do somehing like:
Code: Select all
if (alreadylinked)
{
gdviewer.PageChanged -= mypagechanged;
gdviewer.DocumentClosed -= mypagechanged;
}
gdviewer.PageChanged += mypagechanged;
gdviewer.DocumentClosed += mydocumentclosed;
but event then, the problem is that at the end you only clear the event when i run loadfromgdviewer so, i think some more is missing:
either you add some code to the dispose method of thumbex
Code: Select all
if (alreadylinked)
gdviewer.PageChanged -= mypagechanged;
gdviewer.DocumentClosed -= mydocumentclosed;
can u help?