I'll also note that being relatively new to threading that I'm hesitant to move too much stuff into BGWs so I don't "break" anything inadvertently. I know the old code worked (at the expense of CPU usage) and we'll be going live with no chance for me to test in advance (aside from the few days we've set aside for debug). I'm already hoping the serial port threading will work like it should. I hadn't expected that little surprise. I'm now wondering what else is threaded by default that didn't used to be but I digress.