Как запретить приложению использовать файл в WinRT

У меня есть приложение, которое имеет несколько потоков. Первый поток пишет в StorageFile, второй поток читает из того же StorageFile, Проблема в том, что я не могу предотвратить чтение этого файла вторым потоком, в то время как первый поток пишет в него. Здесь что-то вроде Using Ключевое слово, которое я могу использовать для получения единичного доступа к файлу?

Есть аналогичный вопрос по Stackru, но он не подходит для моего решения.

Мой код:

    public async static Task<bool> Save(string filename, object o)
    {
        try
        {
            Stream stream;

            var folder = Windows.Storage.ApplicationData.Current.LocalFolder;
            var file = await folder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
            stream = await file.OpenStreamForWriteAsync();
            if (o == null || stream == null)
            { }
            else
            {
                DataContractSerializer ser = new DataContractSerializer(o.GetType());
                ser.WriteObject(stream, o);
            }


            return true;
        }
        catch (Exception e)
        {
            return false;
        }
    }

1 ответ

Решение

Я наконец решил проблему, добавив блокировку данных в памяти, а не в файл, что потребовало бы много времени, хотя и элегантно. Однако во время нахождения решений в ответ на подсказку Шрирама Шактивела я нашел эту очень полезную тему. Я надеюсь, что это поможет кому-то.

Другие вопросы по тегам