Calls #doBody while lock is obtained. Blocks if lock cannot be obtained immediately. Retries to obtain lock once per second until it is obtained, or until it has tried ten times. Lock is released when #doBody exits.
if lock could not
/// be obtained if throws System.IO.IOException