Здравствуйте, Labutin, Вы писали:
L>Дела сейчас обстоят так.
L>Первая программа на C++.
L>Периодически открывает файл на перезапись fopen ("...", "w") и пишет туда два числа. После чего файл закрывается. Промежутки времени межде записью непредсказуемы.
L>Вторая программа на C# (точнее ASP.NET приложение)
L>Периодически читает содержимое файла.
L>StreamReader sr = File.OpenText("...");
L>int currentStep = Convert.ToInt32(sr.ReadLine());
L>int allSteps = Convert.ToInt32(sr.ReadLine());
L>sr.Close();
L>Основная проблема в том, что может происходить одновременный доступ к файлу
Наиболее критична ситуация, когда вторая программа читает файл, а первая в этот момент не может записать, т.к. файл открыт.
L>Как наименьшей кровью разрулить ситуацию?
решение 1:
при открытии блокировать намертво (C# : FileAccess.None в С++ не помню) и просто ждать пока файл не освободится.
решение 2:
использовать переименование файла и через имя файла передавать флаги(используется свойство атомарности операции переименивания)
первая программа смотрит есть ли файл filename.app1.txt, если есть — то открывает и пишет в него нужную инфу и после этого переименовывает в filename.app2.txt
вторая программа работает по такому же принципу только в обратную сторону