Re: Memory Leak?
Dave Vorgang <[email protected]>
| Newsgroups | gmane.comp.windows.devel.dotnet.advanced |
|---|---|
| Message-ID | <34BDEF4FDF97EC46B7565B38A5F93FF702378FAB5929@MSDMAIL.medford.k12.or.us> |
I think what I need to do is to black my sub main and wait until I get something back from my form. If I could lock a resource at the point I want to block and release it from an event that is triggered from the form that would work, but I do not know how to do that. Dave Vorgang Senior Programmer / Analyst Medford School District - Information Technology (541) 842-1021 mailto:[email protected] -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[email protected]] On Behalf Of Richard Blewett Sent: Monday, December 01, 2008 11:34 PM To: [email protected] Subject: Re: [ADVANCED-DOTNET] Memory Leak? As an aside, I generally find the programming model introduced with SynchronizationContext in v2.0 to be simpler than using the Control.InvokeRequired/Control.BeginInvoke pair Rich > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [email protected]] On Behalf Of Wilson, Phil > Sent: 02 December 2008 01:27 > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Memory Leak? > > A wild guess: If your cross-thread problems were related to the thread > wanting to change the UI, were you using Control.InvokeRequired and the > cross-thread delegate call model? > > Phil Wilson > > > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [email protected]] On Behalf Of Dave Vorgang > Sent: Monday, December 01, 2008 4:00 PM > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Memory Leak? > > My first go at this was to place it in a separate thread. I spent > about a week on it and could never get it to work correctly. I kept > get getting cross thread problems. > > The concept seems pretty simple. My main process brings up a form, > changes certain attributes and initializes some fields, then the main > process waits until the user presses the enter key or a function key. > > I can't use a dialog box because I want the form to remain once the > user press Enter or a function key, but I want the main process to > continue. > > So, I just need the ability wait until the user presses enter (or > function key). > > Any more suggestions would be helpful. > > Dave Vorgang > Senior Programmer / Analyst > Medford School District - Information Technology > (541) 842-1021 > mailto:[email protected] > > > -----Original Message----- > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [email protected]] On Behalf Of Marc Brooks > Sent: Monday, December 01, 2008 3:48 PM > To: [email protected] > Subject: Re: [ADVANCED-DOTNET] Memory Leak? > > You should NEVER be calling GC.Collect. For that matter, you really > shouldn't ever code for DoEvents. Rather, do whatever it is you need > to do in a loop in a separate thread from the UI. If I had more idea > who was calling this method, and who was changing the global > variables, then I could give better advice. > > On Mon, Dec 1, 2008 at 17:43, Dave Vorgang > <[email protected]> wrote: > > I changed it to: > > Do > > System.Windows.Forms.Application.DoEvents() > > Thread.Sleep(55) > > GC.Collect() > > Loop Until _KeyEntered >= 0 > > > > This helped but it still increased Mem Usage as time went on. > > > > Any help on fixing this would be greatly appreciated. > > > > Thanks, > > > > Dave Vorgang > > Senior Programmer / Analyst > > Medford School District - Information Technology > > (541) 842-1021 > > mailto:[email protected] > > > > -----Original Message----- > > From: Discussion of advanced .NET topics. [mailto:ADVANCED- > [email protected]] On Behalf Of Mark Hurd > > Sent: Monday, December 01, 2008 3:16 PM > > To: [email protected] > > Subject: Re: [ADVANCED-DOTNET] Memory Leak? > > > > On Tue, Dec 2, 2008 at 9:38 AM, Steve Johnson <[email protected]> > wrote: > >> Likely, the problem is recursion. Each call to DoEvents pumps > messages, > >> which causes your VREADFIELDS function to be called from within > itself. > >> Each call allocates another stack frame. You'll eventually run out > of stack > >> space and crash with a StackOverflowException. > > > > I agree that it is not due to the code sample provided in isolation. > > Whenever we need an idle loop we use a similar loop (with Sleep(55)), > > and when it is worth suggesting we know it would be a good time to do > > a GC.Collect we include that too. > > > > Regards, > > Mark Hurd, B.Sc.(Ma.)(Hons.) > > > > =================================== > > View archives and manage your subscription(s) at > http://peach.ease.lsoft.com/archives > > > > =================================== > > View archives and manage your subscription(s) at > http://peach.ease.lsoft.com/archives > > > > > > -- > Marc C. Brooks > http://musingmarc.blogspot.com > > NOT sent from an iPhone > > =================================== > View archives and manage your subscription(s) at > http://peach.ease.lsoft.com/archives =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives