|
I have a single-thread project that's been working fine until tonight. Everything goes well until I try to close it. No error msg, it doesn't freeze. But it won't close. In VS I have to hit the Stop Debugging button. If I run it from a shortcut, I have to use Task Manager to close it (and I get a Not Responding msg).
The only changes I've made tonight was to add a tab control, one page with a WebBrowser and one with a ScintillaNet control. The ScintillaNet control was already in use and I simply moved it to a tabpage. I undid all this but the problem still exists. Closed and restarted VS and that didn't help. Commented out everything in the FormClosing sub - no effect. Other projects close without issue.
Suggestions?
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Open Task Manager and watch CPU load. Either your app is in an eternal loop (total CPU load = 100% divided by number of cores), or it is deadlocked (two threads waiting for a resource/lock the other is holding).
BTW: are you absolutely sure your app is single-threaded? that requires you don't use any callbacks, no timers, no asynchronous operations, no ...
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Luc Pattyn wrote: Open Task Manager and watch CPU load. Either your app is in an eternal loop (total CPU load = 100% divided by number of cores), or it is deadlocked (two threads waiting for a resource/lock the other is holding).
CPU load stays at 4 to 8 percent.
Luc Pattyn wrote: BTW: are you absolutely sure your app is single-threaded? that requires you don't use any callbacks, no timers, no asynchronous operations, no ...
None of that stuff. I just wanted a super-simple PHP/HTML editor. Just opens, edits and saves php/html files.
It's just a temp workaround, but I added Me.Dispose at the end of the Me.Close sub and it closes without issue. That of course doesn't explain (at least not to me) why it suddenly quit closing properly. I removed this before looking at the cpu load, btw.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Alan Burkhart wrote: CPU load stays at 4 to 8 percent.
Not a busy loop then.
Sounds strange.
Where are Me.Close and Me.Dispose located in your source? in some event handler?
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Luc Pattyn wrote: Where are Me.Close and Me.Dispose located in your source? in some event handler?
The "Exit" menu item's click event:
Private Sub CloseApp() Handles menuFile_Exit.Click
Try
Me.Close()
Catch ex As Exception
MsgBox(ex.ToString, MsgBoxStyle.Exclamation, title)
End Try
End Sub
I added Me.Dispose to the end of the FormClosing event handler. Too much code to list here, but all FormClosing does is save preferences, recently used docs and open tabs. Nothing complicated. I disabled (commented) all the code in the FormClosing sub to see if something there was causing the problem. No change.
Weird, huh?
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
weird indeed.
Here is some info you probably already know, and some suggestions:
- Closing and Closed events are obsolete, use FormClosing and FormClosed instead;
- there could be more than one handler associated with form closing;
- if form disposing at the end of FormClosing solves the problem, seems like something goes wrong inside FormClosed handler;
- you could consider calling Application.Exit() instead of Me.Close()
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Tried Application.Exit() but it didn't change anything.
I'm using FormClosing , but not FormClosed .
Only one eventhandler for FormClosing .
I gotta get off of here for tonight. Early start / long day tomorrow. I'll work on it again tomorrow. As always, thanks for your help.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
New ideas:
1.
any chance the ScintillaNet creates a non-background thread? does it offer methods to terminate itself, a close/dispose/whatever? if so, consider calling them in FormClosing.
2.
the change you introduced by moving the ScintillaNet from your Form to a TabPage could be this: on the Form it starts in a visible state, on any non-first TabPage it initially is invisible, therefore it might work a little differently. Experiment: change the order of the TabPages, so ScintillaNet is visible right away.
If #1 does not help and #2 does, time to contact the ScintillaNet provider.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Luc Pattyn wrote: any chance the ScintillaNet creates a non-background thread? does it offer methods to terminate itself, a close/dispose/whatever? if so, consider calling them in FormClosing.
Never needed to do this before but tried it nonetheless. Didn't help. I disposed each ScintillaNet object individually.
Luc Pattyn wrote: the change you introduced by moving the ScintillaNet from your Form to a TabPage could be this: on the Form it starts in a visible state, on any non-first TabPage it initially is invisible, therefore it might work a little differently. Experiment: change the order of the TabPages, so ScintillaNet is visible right away.
The ScintillaNet control is on the first tabpage. I also removed the new tabcontrol so that the program was like it was before the problem appeared (ScintillaNet docked in the form). No change.
I've been using ScintillaNet in place of a TextBox for a couple of years and never encountered this before. I've swapped the StartUp form to a couple of others and they close fine. I may try creating a new form and piece meal the existing code onto it to see if I can track down the cause. Who knows? It may be that the form itself is corrupt.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Sounds like a plan.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
I finally gave up and created a new project. Copied the controls and code from the offending form to the new project one block at a time, looking for the cause. It never materialized. New project works fine. I may never know what caused it. I'm going to just let this one go.
Thanks for trying. This one was just too weird to keep chasing.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Well done. Trying to understand and fix is excellent, stepping over it when normal measures don't work is quite acceptable.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
You may want to use WinMerge to compare the differences between your old and new project. Who knows, maybe something will stick out.
|
|
|
|
|
I was just going to point out that using a SCM would have helped diff'ing this as well. Or rolling back to last known good state...
Andreas
|
|
|
|
|
Your own idea of recreating the form and adding control by control and code block by code block is one I have used successfully.
Never mind who, where is John Galt when we need him?
|
|
|
|
|
Oakman wrote: Your own idea of recreating the form and adding control by control and code block by code block is one I have used successfully.
Yep, I'm about to get into that very thing. I can't find one thing wrong with the existing form and I'm wondering if the file is corrupt down in some level I cannot access.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Alan Burkhart wrote: in some level I cannot access
you may have discovered some anti-Higgs particles in the bits of your Form...
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Using C# in Visual Studio 2005 I have had this problem using databound controls.
If the user enters a value in a databound textbox that expects a value, then deletes the value, the program will not allow the user to leave the textbox, even to exit the program.
You cannot do anything except re-enter a value.
Dennis
|
|
|
|
|
Barney Frank is one of the few decent, intelligent people we have in congress.
|
|
|
|
|
GamleKoder wrote: Barney Frank is one of the few decent, intelligent people we have in congress.
Risible at best.
Let's face it - it was Barney Frank who swore up and down that Fanny and Freddy were solid even while Bush was warning that they needed to be more closely regulated. Barney Frank is a typical big spending, lying, agenda-driven liberal, and he bears a large part of the blame, via the Fanny and Freddy mess, for the bigger mess we're in now. Say what you will, but facts are facts. Barney is the poster boy for the brainless left.
If Barney Frank eats a fruitcake, is it cannibalism?
|
|
|
|
|
Luc Pattyn wrote: eternal loop
- so much more poetic than infinite loop!
|
|
|
|
|
Poetry in motion.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|
|
Your UI thread isn't checking and processing windows messages. That's why you still have a window, CPU usage for the process is >0%, it won't exit, and you get a not-responding when you send a window close message to it with task manager (aka "use Task Manager to close it").
Might be worthwhile to configure VS to use the MS symbol server, then break the process. Find the UI thread (might be called "MainThread") and look at it's stack to see where its stuck. With any luck, the culprit will be obvious, but probably not since that thread is polling something and it probably looping in code that isn't yours. Good luck.
patbob
|
|
|
|
|
Had a similar situation in C# and solved it with: Environment.Exit ();
|
|
|
|
|
Hi Guys ...
I need to know how to hide my VB6 Program from Task Manger Process list ...
I Searched the Whole Internet ... and the Result in Some Cases was Viruses the My Anti Virus Detected it and removed it ...
I need a ture hiding code that is not a Virus ... and can work in VB6 ... Its Hard I know ..
But I depend on you Guys ....
thanks ...
|
|
|
|