I have been developing a machine polling (windows forms) application for some time now and have successfully implemented all the functionality that is required. However I have faced one significant problem from the outset in that I have been unable to deliver a smooth user experience as far as the user interface is concerned. I have tried many different approaches (to the point where I have lost track of everything I have tried) to prevent the UI from locking but nothing has worked.
My application essentially works as follows:
In a machine shop, there are 100 machines. 50 of which I can poll directly and gather the required information. The other 50 cannot be polled in this way and are configured to spit out a text file at a specific intervals containing machine information. I have 2 classes, one for each machine type which either polls the machine or parses a text file on a network to obtain the data. I have a datagridview bound to a MySQL datasource on the network with a list of IP addresses or file paths for each machine and when the user starts the polling, a new thread is spawned for each machine and the tableadapter is updated with a delegate sub on the UI thread.
This has not yielded an acceptable UX so I want to take a few steps back before I keep battling on with this since I'm a novice programmer and do not know whether I'm way off track with my approach.
1. Is my setup the best way to tackle this problem?
2. If not, what would be a better way?
3. Is there any advantage to using a WPF app?
4. Should I use some sort of local class/collection etc. between the datasource and the UI and how would I implement that?
I would appreciate any advice or tips you might have!
Thanks!
My application essentially works as follows:
In a machine shop, there are 100 machines. 50 of which I can poll directly and gather the required information. The other 50 cannot be polled in this way and are configured to spit out a text file at a specific intervals containing machine information. I have 2 classes, one for each machine type which either polls the machine or parses a text file on a network to obtain the data. I have a datagridview bound to a MySQL datasource on the network with a list of IP addresses or file paths for each machine and when the user starts the polling, a new thread is spawned for each machine and the tableadapter is updated with a delegate sub on the UI thread.
This has not yielded an acceptable UX so I want to take a few steps back before I keep battling on with this since I'm a novice programmer and do not know whether I'm way off track with my approach.
1. Is my setup the best way to tackle this problem?
2. If not, what would be a better way?
3. Is there any advantage to using a WPF app?
4. Should I use some sort of local class/collection etc. between the datasource and the UI and how would I implement that?
I would appreciate any advice or tips you might have!
Thanks!