I’m writting a Windows Forms application in C# that performs a lot of long-running procedures. I need to program the application so that the GUI doesn’t lock. What is the best way to program it?
I know how to use the following:
BeginInvoke/EndInvoke- Calling
Application.DoEvents()repeatedly (probably not a good idea) BackgroundWorker- etc.
But how to manage GUI state with call backs, etc… is not trivial. Are there solutions for this (in the form of patterns or libraries)?
The Model-View-Controller pattern separates the state of your UI from the visual aspects of the UI. As long as your MVC implementation is thread aware, it should solve the state management issue for you.
This is how I handle multi-threaded UI implementations.
EDIT: Here’s a good post on selecting an MVC implementation for WinForms projects.