I never got an answer on this. So...
I wrote a new version of ReadProject() that sleeps its thread for 1 second and then retries the Microsoft ReadProject() call. It does this a max of 10 times before failing. This has resolved the issue, but it would seem that there should be a
better solution in the API for when the system is updating the database.
My remaining fear is that there is some other process that will run into these locks and cause an unanticipated failure.
Thanks.