Hai due cose contro di te:
Il primo è una condizione di razza , in cui il risultato dell'operazione di sincronizzazione dipende dai tempi di Word e da quelli del tuo processo di sincronizzazione. (Se stai usando qualcosa basato sugli eventi, la tempistica è un po 'più prevedibile, ma significa semplicemente che cancellerai la tua cronologia tutto il tempo invece che a volte come faresti se stai votando.) Come hai osservato, non c'è modo di sapere quanto tempo trascorrerà tra i passaggi 2 e 3, quindi in attesa di vedere se il file restituito creerebbe un'altra condizione di competizione.
Secondo è l'incertezza sul fatto che un file che vedi come eliminato riapparirà perché il sistema operativo non può prevedere cosa farà un'applicazione in futuro. Inoltre, non è in grado di dirti quale applicazione ha cancellato un file, che potresti essere in grado di utilizzare per trarre una conclusione ragionevole che il file potrebbe riapparire.
Se Word salva effettivamente i file nel modo descritto da Microsoft, questo è un difetto nell'implementazione. Windows ha chiamate API per eseguire nomi atomici che renderebbero il processo simile a questo:
- Crea file temporaneo
~wrdxxxx.tmp
- Rinomina atomicamente
~wrdxxxx.tmp
in Example.doc
Poiché il passaggio 2 è atomico, il tuo programma di sincronizzazione non vedrebbe mai che Example.doc
sia scomparso, solo che i relativi attributi o contenuti sono stati modificati.
Il comportamento di Word non è qualcosa che puoi cambiare, quindi aspettare è davvero l'unica opzione.
Se l'obiettivo non è quello di perdere la cronologia delle versioni, è meglio effettuare delle eliminazioni provvisorie e attendere un tempo abbastanza lungo (diciamo, 30 secondi) per renderle permanenti. Ciò impedirà la maggior parte - ma non tutti - dei problemi causati dal non sapere per quanto tempo un salvataggio richiede. Ovviamente, è possibile che un salvataggio duri così a lungo, ma è probabilmente raro. Il più grande trabocchetto è che un periodo provvisorio abbastanza lungo tratterà una sequenza di eliminazione / creazione eseguita da un essere umano in quel momento come un cambio di versione piuttosto che in realtà. Questo non riflette la realtà di quello che è successo, ma preserverà la cronologia delle versioni.
La domanda a cui solo tu puoi rispondere è se avere una realtà distorta come quella in occasioni relativamente rare è accettabile in viso per non avere il sincronizzatore che soffi via la cronologia.