Any suggestions on BGW ideas for long-term performance?
Yes it:). There is nothing inherently wrong with long operations in BackgroundWorker or ThreadPool ... if there are deadlocks in the code due to long operations, then something is wrong with the code.
Suggestion: allow the operation to cancel. BGW allows this by setting the bool property. You need to periodically check this property in the DoWork method.