Attachment: DealerManager.zip (292691 bytes)
I am trying to work out how to make my GUI work better.
I currently have a project setup with remoting. Using the Blogs of Oliver, I have setup a simple winforms app that configures an access provider and setups the datastore for remoting. IT WORKS GREAT.
Using a compression sink from CodeProject made it even better.
So the app works fine, however I find that when it loads a gridview the app will stop responding for a couple of seconds while it gets the data from the remoting server. Keeping in mind that when on localhost or LAN it is lightning fast and no UI effects are felt, however when dealing with bandwidth of 10-20KBps it does take a few seconds for the data to come accross.
For testing I have been using NetLimited (which btw rocks for doing tests of low bandwidth situations)
Normally what i use to do when using WebServices is setup a new threading.thread and obtain a "dataset" on another thread and parse the dataset back to the gui thread to load into the grid, this gave the desired GUI results.
However it seems even if I create a UnitOfWork in the new thread using the remoting datalayer I setup in the GUI thread the GUI thread still hangs while the data gets processed. (ps. I have using a ThreadSafeDataLayer)
I even got a little desperate and decided to try another trick, I instanced the DataLayer in a new thread and kept that "non" UI thread running on a loop. Then in my form still create another thread (now there is 3 threads, UI thread, a UI spawned thread to create UnitOfWork and get data and the DataLayer thread), and my UI still hangs.
What is the correct process to have XPO do the data processing on another thread and pass back the result?
I note that XAF suffers this same fate.
As I am in a real time constraint here I have marked it Priority, however to assist I have do a bit of work on my end to give you a sample of my app and the remoting server, all you need to do is get something to limit your bandwidth to perform the test. also note the port is configured in compression.config (it is currently set to 8880).