Answering this myself as I found the error and it was all mine. I was declaring the CCoreScanner (the scanner object) in a separate class which, I assume, was causing the scanner object to be Garbage Collected between 3.5 and 5 minutes after the program was opened. I moved the scanner object and associated code into the code-behind for the form and this seems to have solved the problem.
Good luck to anyone else experiencing this issue; hope my mistakes/lack-of-knowledge can help you save some time with your debugging.