I agree in principle, but am concerned that the dupe may mean cockups later (change Checksum() and miss the change here).  There's no simple solution here though - a callback passed into Checksum() seems over the top.

(I note that it appears this would occur only when exiting the app, as we don't appear to cancel this job anywhere else).