4 votes

Comment activer deux applications C# différentes accédant au même répertoire dans un fil continu ?

J'ai le même morceau de code BackgroundWorker dans deux applications s'exécutant simultanément. Ce code évitera-t-il le problème d'accès au même ressource par deux processus et fonctionnera-t-il correctement ?

void bw_DoWork(object sender, DoWorkEventArgs e)
    {
       bool flag = false;
       System.Threading.Thread.Sleep(1000);

       while (flag.Equals(false))
       {

           string dir = @"C:\ProgramData\Msgs";
           try
           {
               if (Directory.GetFiles(smsdir).Length > 0)
               {                      
                   flag = true;
               }

           }
           catch (Exception exc)
           {
               Logger.Log("Exception d'accès au répertoire : " + exc.Message);
               System.Threading.Thread.Sleep(10);
           }
       }

0voto

Kratz Points 2895

Une bonne façon de faire du verrouillage entre les processus comme ça est d'utiliser un fichier. Le premier processus crée un fichier et l'ouvre avec un accès exclusif, puis le supprime une fois qu'il a terminé. Le deuxième processus verra soit que le fichier existe et devra attendre qu'il disparaisse, soit il échouera en essayant d'ouvrir le fichier en exclusivité.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X