I want to display a progress bar while doing some work, but that would hang the UI and the progress bar won\'t update.
I have a WinForm ProgressForm with a Pro
Reading your requirements the simplest way would be to display a mode-less form and use a standard System.Windows.Forms timer to update the progress on the mode-less form. No threads, no possible memory leaks.
As this only uses the one UI thread, you would also need to call Application.DoEvents() at certain points during your main processing to guarantee the progress bar is updated visually.