У меня есть winapp, который записывает данные в XML (Data.xml).Этот xml - мое хранилище данных.
Winapp будет использоваться по крайней мере 10 чел.Иногда 2 пользователя могут импортировать некоторые данные и сохранять их в Data.xml (импорт обычно занимает 60-100 секунд).В течение этого периода, когда процесс получил первый доступ к Data.xml, он должен заблокировать его, а другой процесс должен быть проинформирован о том, что кто-то другой импортирует.(я не использовал никаких концепций потоков)
Я попробовал следующее: -
FileAttributes fileAttributes = File.GetAttributes(m_sDataXMLPath);
if ((fileAttributes & FileAttributes.ReadOnly) != FileAttributes.ReadOnly)
{
try
{
FileStream currentWriteableFile = File.OpenWrite(m_sDataXMLPath);
currentWriteableFile.Close();
}
catch
{
throw; // throw the IO exception so that the other process gets the
// exception which is ok with my requirement.
// the user just needs to know.
}
}
Выше работает, если я запускаю 2 экземпляра winapp на одном компьютере, но не удается, когда яЯ запускаю их на 2 отдельных машинах!
Пожалуйста, дайте мне несколько советов по блокировке, а затем сообщите другому пользователю, что кто-то другой пишет в него.