The 'delete after "x" milliseconds' would be an addition to the existing processes, rather than replacing them.

If it fails the executable will fall back on the 'delete when completed' method.

The method could be extended to 'try and delete every "x" milliseconds'.

As you say there is a timing issue - it is possible for the file to be deleted before it is read! I'd make the "x" value a configurable option at encryption time.

I'm still thinking about it, so I wanted to raise it as a possibility so that if anyone needs it they can make a case for it.