2015-06-03 2 views
0

Когда я нажимаю кнопку ввода дважды быстро, второй запуск будет аварийным. У меня есть выяснить причину в журналах:Приложение WPF запускает дважды ошибку

«Процесс не может получить доступ к файлу„.. \ filemanifest.xml“, потому что используется другим процессом.»

Я исследовал на многих сайтах и ​​получаю ответы, как предотвратить запуск приложения дважды, а не то, как разрешить запуск приложения много раз. Спасибо за всю твою помощь.

Как я могу разрешить запуск приложения дважды без сбоев?

+0

Вы пробовали какой-либо из [этих] (http://stackoverflow.com/questions/ 414642/wpf-enforce-only-one-instance-of-application) ответы? –

+0

@Mike: я не хочу, чтобы приложение запускалось дважды, это означает, что если пользователь нажимает кнопку ввода много раз, запускается много экземпляров приложения. Те решение, которое вы дали, позволяют запускать приложения только один раз (для этого случая я использую Mutex в порядке). Btw, спасибо за ваш комментарий –

ответ

0

Добавить в ваше приложение Metod для проверки файла используется:

protected virtual bool IsFileLocked(FileInfo file) 
{ 
    FileStream stream = null; 

    try 
    { 
     stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None); 
    } 
    catch (IOException) 
    { 
     //the file is unavailable because it is: 
     //still being written to 
     //or being processed by another thread 
     //or does not exist (has already been processed) 
     return true; 
    } 
    finally 
    { 
     if (stream != null) 
      stream.Close(); 
    } 

    //file is not locked 
    return false; 
} 

И только

for (int i = 0; i < 100; i++) 
      { 
       if (IsFileLocked(file)) 
       { 
        //Add what you want 
        Thread.Sleep(1000); 
       } 
       else 
       { 
        //Add what you want 
        return; 
       } 
      } 
+0

Эта ошибка возникает, когда я запускаю приложение, а файл xml создается автоматически. Он имеет путь, подобный «AppName.exe \ filemanifest.xml». Поэтому я думаю, что не могу применить ваш код только потому, что не знаю, где он создан. –

+0

@galakt Конечно, если приложение само читает этот файл, то это всегда будет возвращать * «файл используется» *? Просто догадка. –

Смежные вопросы