Bonjour,

J'ai un petit soucis dans la synchronisation de mes fichiers.

En fait, un fichier req.txt est utilisé par deux exécutables, a et b. a réécrit régulièrement ce fichier et b le lit en boucle et si le fichier a été modifié, il opère des traitements.

Le problème est le suivant:

Mon application plante si a écrit le fichier alors que b est en train de le lire.

Comment verrouiller mon fichier lorsqu'il est écrit par a ou lu par b?

Je voudrais un code du style:

Dans le code de b:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
procedure lectureDansB (fichier : String);
...
While FichierEnEcritureDansA(fichier) do // On attend que a ait fini d'écrire
begin
   Sleep (100); 
end;
... // Lecture du fichier
end;
Dans le code de a:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
procedure EcritureDansA (fichier : String);
...
While FichierEnLectureDansB(fichier) do // On attend que b ait fini de lire
begin
   Sleep (100); 
end;
... // Ecriture du fichier
end;
En fait, je ne vois pas comment écrire les méthodes FichierEnEcritureDansA et FichierEnLectureDansB me renvoyant vrai si respectivement le fichier est en écriture dans a et en lecture dans b.

Cordialement.