This is called on one of many background threads, right?  You're going to need to tweak for multithreaded code.
On the other hand, does it matter if an extra instance or two get created?  Maybe.