Woah... what's with the background worker that just do adds and deletes? What the heck? There isn't a reason for that. Especially since the only thing they do is then interact with the DR on the primary thread. It's like going out the front door, getting into your car, backing up, using the garage remote to open it up, plulling back in, going into the garage, get a hammer, back into the car, close garage door, then go back through your front door. You're creating a thread that then has to go back to the primary thread and update the UI.... why? Just update the UI in the first place... no need for the thread or the invoke.

-tg