Metro StorageFile Многопоточная регистрация файлов
Как правильно обрабатывать многопоточный доступ к файлам StorageFile
объект?
После создания StorageFile
Я пишу в него используя FileIO.AppendTextAsync
,
Это работает, но как только несколько потоков вызывают FileIO.AppendTextAsync
Я получаю сообщения об отказе в доступе - возможно, потому, что предыдущий вызов все еще выполняется.
Как мне справиться с этой ситуацией?
1 ответ
Решение
Я не нашел идеального решения, но нашел работоспособное.
- Отметить
StorageFile
сvolatile
Ключевое слово (Значительно меньше ошибок). - Затем я произвел рефакторинг кода, который без необходимости выполнялся из разных потоков (теперь все ошибки исчезли).
ПРИМЕЧАНИЕ: и 1, и 2, реализованные вместе, были необходимы для достижения желаемого результата - поэтому мой комментарий о решении НЕ является идеальным.
ОБНОВЛЕНО: для более правильного решения, пожалуйста, смотрите этот пост: FileIO Multiple Threads