While it is technically not illegal to manipulate controls across threads, this is prone to some serious errors.

Use these tutorials by jmc, I found them invaluable when getting acquainted with the BGW.

Using the Background Worker Component


Accessing Controls from Worker Threads