But the second time, when I try to run the object, the object's is_busy property is set to "true"
This means that the first background action is still in progress.
First you need to decide if you want two of these actions to continue at the same time.
If not, cancel to stop (and then restart) Bgw.
If so, create a new bgw each time.
And although you can reuse Bgw, and it makes sense in the first scenario, there is no big saving. Bgw Thread comes from ThreadPool and will still be reused.
source share