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