You could use the WorkerSupportsCancellation property of the BackgroundWorker Class and cancel your BackgroundWorkers before exiting the application. When WorkerSupportsCancellation is true, you can use the CancelAsync method to cancel a specific BGWorker.

And Yes, once the main thread is killed, the threads its started a supposed to be killed too.

Hope this helps.