...Not that I didn't try it
but it's not working as expected.
BackgroundWorker object is instantiated within Component's constructor (hosted inside PalleteSet). It means it's sitting on a calling thread. To avoid possible inter-threading problems I'm creating a new TreeView instance within DoWork handler, filling it's nodes from a database, and returning result to handler's Result property. RunWorkerCompleted handler receives resulting (e.Result) in-memory TreeView and parses it's nodes back to original TreeView hosted by a Component.
As a final result - Component's TreeView contains parsed nodes, they're there in it, but they're not displayed - TreeView remains (visually) empty.
Regards,
Maksim Sestic