Thread Minimize Application
-
Hi everyone, I´m programming an application win forms and in some parts of my application I have a strong processing module, and I´ve decided do make a loading screen. So, i´ve done it:
Private Sub ShowLoading() Dim frmBlank As New frmBlank frmBlank.Cursor = Cursors.WaitCursor frmBlank.Show() Dim frmLoading As New frmLoading frmLoading.ShowDialog() End Sub Private Sub StartLoadingThread() thread = New Threading.Thread(AddressOf ShowLoading) thread.Start() End Sub Private Sub StopLoadingThread() thread.Abort() End Sub
But, the problems appear, when i abort the thread, the loading form closes, as it have to close, but the whole application minimizes. I´m using the form in a Class Library, and it start maximized. THe whole think works as it have to work perfectly, but the problem is the application minimize. Thanks everyone!
----- LeandroAB
-
Hi everyone, I´m programming an application win forms and in some parts of my application I have a strong processing module, and I´ve decided do make a loading screen. So, i´ve done it:
Private Sub ShowLoading() Dim frmBlank As New frmBlank frmBlank.Cursor = Cursors.WaitCursor frmBlank.Show() Dim frmLoading As New frmLoading frmLoading.ShowDialog() End Sub Private Sub StartLoadingThread() thread = New Threading.Thread(AddressOf ShowLoading) thread.Start() End Sub Private Sub StopLoadingThread() thread.Abort() End Sub
But, the problems appear, when i abort the thread, the loading form closes, as it have to close, but the whole application minimizes. I´m using the form in a Class Library, and it start maximized. THe whole think works as it have to work perfectly, but the problem is the application minimize. Thanks everyone!
----- LeandroAB
Why are you show the loading form on a seperate thread? From what you're describing, you wouldn't need any threading at all. Also, why is the "Loading..." form being shown as a dialog?? and I have no idea what frmBlank is for. From your description, it should be a simple matter of creating and showing a "Loading..." form, doing your work, then destroying the "Loading..." form. Creating forms and show ing in anything other than the UI thread is not a good idea, as you've found out from your weird side-effects.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008 -
Why are you show the loading form on a seperate thread? From what you're describing, you wouldn't need any threading at all. Also, why is the "Loading..." form being shown as a dialog?? and I have no idea what frmBlank is for. From your description, it should be a simple matter of creating and showing a "Loading..." form, doing your work, then destroying the "Loading..." form. Creating forms and show ing in anything other than the UI thread is not a good idea, as you've found out from your weird side-effects.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008Let me try to explain more detailed my problem. I have a very long process, and I don´t want to lock the screen without a message. So I did a loading form, that has only one label: "Loading..." When i start the process, the form was displayed, and when the process ends, i have to close the form. Thats the reason that i habve to use a thread, because i have to continue with my process in background. The frmBlank is only used to stay between the application and the loading form, without its the problem continues ocurring. When i kill the thread, the forms closes automaticaly, but i´ve tried to close mannualy the form in the thread, and the problems continues ocurring. I show the form as a dialog, to block the user access to the system during the process. Thanks for your time.
----- LeandroAB
-
Let me try to explain more detailed my problem. I have a very long process, and I don´t want to lock the screen without a message. So I did a loading form, that has only one label: "Loading..." When i start the process, the form was displayed, and when the process ends, i have to close the form. Thats the reason that i habve to use a thread, because i have to continue with my process in background. The frmBlank is only used to stay between the application and the loading form, without its the problem continues ocurring. When i kill the thread, the forms closes automaticaly, but i´ve tried to close mannualy the form in the thread, and the problems continues ocurring. I show the form as a dialog, to block the user access to the system during the process. Thanks for your time.
----- LeandroAB
LeandroABorges wrote:
When i start the process, the form was displayed, and when the process ends, i have to close the form. Thats the reason that i habve to use a thread, because i have to continue with my process in background.
OK. It's the long-running process that goes on the background thread, not the "Loading..." form.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008 -
LeandroABorges wrote:
When i start the process, the form was displayed, and when the process ends, i have to close the form. Thats the reason that i habve to use a thread, because i have to continue with my process in background.
OK. It's the long-running process that goes on the background thread, not the "Loading..." form.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008But how can i show the loading form, in many different process types without making a form for each process thread? If i show the form in the thread, the process will stop, because it´s a dialog. If i show the form where i call the thread, the problema is the same. How i can tell the form that the process has finished and it can close?
----- LeandroAB
-
But how can i show the loading form, in many different process types without making a form for each process thread? If i show the form in the thread, the process will stop, because it´s a dialog. If i show the form where i call the thread, the problema is the same. How i can tell the form that the process has finished and it can close?
----- LeandroAB
LeandroABorges wrote:
But how can i show the loading form, in many different process types without making a form for each process thread?
How about a Shared Sub? Call it whenever you launch a thread.
LeandroABorges wrote:
If i show the form in the thread, the process will stop, because it´s a dialog.
No, it won't. The long-running process should be in its own thread. That will NOT hang the UI thread, so it's free to redraw itself whenever needed.
LeandroABorges wrote:
If i show the form where i call the thread, the problema is the same.
No, it's not.
LeandroABorges wrote:
How i can tell the form that the process has finished and it can close?
The "Loading..." form doesn't know anything about the thread process, so it'll have to be destroyed by the form that created it when you code determines that the process is complete. You might want to look into the BackgroundWorker component to help you with this.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008 -
LeandroABorges wrote:
But how can i show the loading form, in many different process types without making a form for each process thread?
How about a Shared Sub? Call it whenever you launch a thread.
LeandroABorges wrote:
If i show the form in the thread, the process will stop, because it´s a dialog.
No, it won't. The long-running process should be in its own thread. That will NOT hang the UI thread, so it's free to redraw itself whenever needed.
LeandroABorges wrote:
If i show the form where i call the thread, the problema is the same.
No, it's not.
LeandroABorges wrote:
How i can tell the form that the process has finished and it can close?
The "Loading..." form doesn't know anything about the thread process, so it'll have to be destroyed by the form that created it when you code determines that the process is complete. You might want to look into the BackgroundWorker component to help you with this.
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008Dave, Thanks for your help, i´ve decided to do somethink more simple, i´m almost out of time. I´ve disabled all the form (frm.enabled = false) and make some "Loading" label visible. Thanks for your time.
----- LeandroAB