2008-10-30 5 views
0

У меня есть простое приложение, которое записывает в xml-файл при каждом нажатии кнопки. Как только это будет сделано, я прочитал Xml-файл вскоре после (как и в нескольких строках ниже без каких-либо методов, чтобы вмешаться между ними).Лучшая стратегия синхронизации

Когда приложение запускается в первый раз, файл xml записывается в/read из файла fine, но если я снова нажимаю кнопку, я получаю «Файл используется другим процессом». Я делаю весь флеш, закрываю, разбираю вещи своими потоками и намереваюсь использовать ProcessMon, чтобы проверить, какой процесс держит файл.

Программно, что является лучшей стратегией, чтобы избежать этой проблемы?

Благодаря

+0

Можем ли мы увидеть код? – 2008-10-30 18:14:39

ответ

1

Просто убедитесь, что файл записывается, а затем использовать в данной памяти вы только что написали в файл.
Вам не нужно читать его снова.

0

самым простым решением было бы просто блокировать весь код, который обращается файл XML

т.е.

object locker = new Object(); 

.... 

lock (locker) 
{ 
    //write xml file 
} 
0

Я думаю, что я ответил на этот один уже в другом месте. Вызовите метод Flush() непосредственно перед закрытием и используйте отдельные объекты FileStream. Я думаю, что объект FileStream является проблемой, поэтому всегда полезно Flush(), когда вы закончите писать.

Однако для читателей не существует эквивалентного метода. поэтому я закончил использование объектов FileStream.

Rudedog