Hi again, Wyatt.
I have done some more debugging and it turns out that:
* WorkerReportsProgress and WorkerSupportsCancellation properties do not need to be set (as you said).
* There is no need to use a new BackgroundWorker instance for each job
* All there is needed is calling System.Windows.Forms.Application.DoEvents() in "certain places" to ensure that the bw_RunWorkerCompleted eventhandler is eventually called every time!
My modified AutomaticUpdater.dll now only differs from the original one by having three DoEvents() calls added in UpdateHelper.cs - I will send the updated version of this file to you in an email.
Now only two tings really nag me:
* I really don't understand WHY this change resolves the problem - but it does! (can you explain it to me, you clever guys?

* I cannot judge if the change i made has unwanted side effects when using the AutomaticUpdater on a form. I will leave it up to you to answer that question. too.
Please let me know about your findings and what you think of it!
Regards, Martin.