Are you sure you tried this with FileShare.None specified for the share
argument?
FileShare.None means that you can't open the file if something else has it
open (in any way, shape or form) and, once you have it open, nothing else
can open it untill you close it.
It is what is commonly known as 'opening a file for exclusive use' and it
works reliably.
If the scanner is still writing the file I would expect that you get an
exception when you attempt to open the file in this manner.
If you don't, and the scanner is still writing the file, then it would
indicate that the scanner is opening and closing the file each time it
writes a block.
Because of the critical nature of the file (it is only the entire file that
has any meaning), if anyone who worked for me wrote a piece of code like
that, they would be looking for another job.