Why is my AlphaPanel approach to disable the entire GUI so slow?
-
I'm programming using WinForms in C# .NET 2.0 and sometimes I want to disable the entire GUI so that the user can't e.g. press any buttons or change any comboboxes. I found this through googling Disable form Controls Without Being Gray!!![^] and I thought it was working great, until today. Whenever USB-cables are connected/disconnected on my PC, I get an event and then I disable the GUI, using the code I linked to above, and re-enumerate my virtual COM-ports and then I enable the GUI again. I discovered that executing this.Controls.Add(alphapanel); takes almost 2 seconds and executing alphapanel.BringToFront(); takes another second! Is there anything I can do to speed this up?
-
I'm programming using WinForms in C# .NET 2.0 and sometimes I want to disable the entire GUI so that the user can't e.g. press any buttons or change any comboboxes. I found this through googling Disable form Controls Without Being Gray!!![^] and I thought it was working great, until today. Whenever USB-cables are connected/disconnected on my PC, I get an event and then I disable the GUI, using the code I linked to above, and re-enumerate my virtual COM-ports and then I enable the GUI again. I discovered that executing this.Controls.Add(alphapanel); takes almost 2 seconds and executing alphapanel.BringToFront(); takes another second! Is there anything I can do to speed this up?
You should monitor the individual connections so you don't have to drop and reconnect "everything". You wouldn't drop things in a mission critical app and you should treat all apps as if they were (IMO).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
-
You should monitor the individual connections so you don't have to drop and reconnect "everything". You wouldn't drop things in a mission critical app and you should treat all apps as if they were (IMO).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
I don't disconnect anything, I just ask the Device Manager what Com ports are present and then I compare that with what was present before and take appropriate actions (e.g. remove or add Com port from a combobox). But this is not what's taking so long, it's the AlphaPanel handling that takes time.
-
I don't disconnect anything, I just ask the Device Manager what Com ports are present and then I compare that with what was present before and take appropriate actions (e.g. remove or add Com port from a combobox). But this is not what's taking so long, it's the AlphaPanel handling that takes time.
If the GUI is slow, it means you should be doing this "AlphaPanel handling" in the background. [BackgroundWorker Class (System.ComponentModel) | Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker?view=net-7.0)
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
-
You should monitor the individual connections so you don't have to drop and reconnect "everything". You wouldn't drop things in a mission critical app and you should treat all apps as if they were (IMO).
"Before entering on an understanding, I have meditated for a long time, and have foreseen what might happen. It is not genius which reveals to me suddenly, secretly, what I have to say or to do in a circumstance unexpected by other people; it is reflection, it is meditation." - Napoleon I
After a test with loaded (I loaded them from a hdd-drive) 3000x3000 images (Same Datatype) it worked fast and without problems. Too much changes