|
Are you actually closing the login form, or just hiding it?
You need to debug your code and check which forms are still open when you've closed your main form. For a Windows Forms application, look at the Application.OpenForms collection.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Yes I wrote before that I have checked the application.openforms.count and is 1.
Of course I have closed the login form. Only the main form is open and when I close this the application continue to run. On thread list I have those queries that I have explained above.
|
|
|
|
|
So if Application.OpenForms.Count is 1, even after you've closed the main form, then you need to drill into that collection to see which form is still open.
Then you need to work out why the hidden open form isn't being closed properly.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
The Application.OpenForms.Count is 1 before closing the main form.
|
|
|
|
|
Create a loop that prints all the form names in that collection, just to be sure that is correct.
The application would not terminate if a form is still open (might be invisible), or a foreground-thread is still running. In all other cases, the process ends.
If you say there are no other threads, then a form must be open. The other works also; if you say there's no form open and can validate that, there must be a thread with a higher priority than a background-worker.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
In the Main form's FormClosing event I've put a line that show the application.openforms.count.And also I've put that line on Formclosed event.
In the FormClosing event that number is 1.
On FormClosed event that number is 0.
The application continue to run.
But nobody says a word for the Queries that remain on Thread list.
Are this queries that prevent the application to exit or no ?
|
|
|
|
|
desanti wrote: Are this queries that prevent the application to exit or no ? I can't say, depends on the priority of those threads. Any backgroundthread would terminate if the process ends. A foreground thread would prevent that.
You could check if they interfere by placing those queries in comments, and see if the problem persists.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I've tried to run my application from running directly the exe file on /bin/debug folder. ( i'm running windows 10 ).
When the application is open , on task manager there's only 1 entry for my application under Apps section .
When I close my application , this icon on Apps section is removed , but an icon is added under Background processes , and this is never removed.
But on my application I have not start any other thread through my code.
What this can be ?
Thank you !
|
|
|
|
|
desanti wrote: What this can be ? If you did not start a thread, then the mainthread is not terminating.
The default entrypoint would be the "Main" method in the Program class. I'm not sure whether this is called the same in VB, but it would have a entry-point. It says something like "Application.Run(MainForm)"; if you have code that is running after that point, then the process continues.
If you don't have this code, then create it. Add a module called "Program", add the Main method, create your form there. That way you can put a breakpoint there and figure out what is happening.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
It seems that the problem is the main form.
I've made a test , and I have configured that after login form to open other forms and not the main form. When this forms is open , and I try to close , the application is closed correctly.
Only with the main form is this problem.
But is strange because the main form is closed correctly but I don't know why the application is not closed.
I've made a test :
I remove all the code from the Main form. So at this moment inside this forms there are only some controls , but no code at all. But the problem remain , so when I close this form , the application continue to run.
Why a control can prevent an application to close even when the form that have this controls is closed ?
|
|
|
|
|
desanti wrote: Why a control can prevent an application to close even when the form that have this controls is closed ? There might be several reasons, but each would be weird since you say there was no code left. Had you hooked the FormClosing or FormClosed event, then it would be easier.
It is not some control; there must be some code preventing the windows from closing normally. May be hiding, or doing lots of processing. Does the processor jump to 100% if you close the last window?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Sorry there's no code on main form. Only controls. Maybe something is wrong with Form's designer ? What can I do ?
|
|
|
|
|
There's a small window in your IDE called the "Solution Explorer", contains a button to show all files. See what the generated code contains.
Any special controls on the mainform?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I've already showed all files.Which of files should I open ? The form designer ?
|
|
|
|
|
IIRC, most generated files are hidden by default. Are there any events still hooked on the MainForm, when you look in the designer?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Maybe I don't understand very well what you are saying , but on the main form there's no code at all. Of course the designer is full.
|
|
|
|
|
desanti wrote: Maybe I don't understand very well what you are saying , but on the main form there's no code at all. Of course the designer is full. When you open the form in the designer, and you go to the properties; there's a button on there to switch to the events.
You said the designer is full, I'd assume you mean with controls. Anything special in there, or default textboxes and buttons and stuff?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
The only special thing is this sub :
Private components As System.ComponentModel.IContainer = Nothing
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso (components IsNot Nothing) Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
But I've tried to remove this , and the problem is the same.
|
|
|
|
|
That bis only part of the designer-script what you will find on every designer-created container-control.
|
|
|
|
|
on 02.11.16 at 19:16 you wrote :
seems that the problem is the main form.
I've made a test , and I have configured that after login form to open other forms and not the main form. When this forms is open , and I try to close , the application is closed correctly.
could you please explain this ...? I think, there you could find the Solution ...
|
|
|
|
|
Ok , to be more clear :
My default configuration is that after the login form , the main form is open. Just for test , I've tried to open another form after the login form.
So I have 2 situations :
This scenario fail :
Start the application - Login form is open - Login form is closed and Main form is open - Try to close the main form - Main form is closed but application continue to run.
This scenario works correctly :
Start the application - Login form is open - Login form is closed and another form (not Main form) is open - Try to close the open form - The form and the application are closed correctly.
so it seems that the problem is that when the main form is the last open form , when closes the application continue to run.
|
|
|
|
|
When I read this reply I agree with Richard.
The problem comes from your login-form - maybe the main-form has also some circumstances ... but the common part is the login-form.
Here you should look - or perhaps "we" if you provide some code ...
|
|
|
|
|
Ok , let's suppose I remove the main form from my project. there will be no more problems.
so I think the main form is the problem.
|
|
|
|
|
But you have still not provided any useful information that could help us to diagnose your problem.
|
|
|
|
|
OK ... I agree with Richard again.
To give you suggestions we need much more information about the things which happen on your Mainform.
In this context are possible mistakes :
- a still running Task / Thread / Backgroundworker
- you added an Eventhandler to a method and don't removed it
Have you set any Breakpoints inside your code which show you what happens if you try to close the application ( which methods are called and which not) ?
|
|
|
|