Я пишу несколько файлов одновременно в C #.
Я сочиняю видео из нескольких фотографий и асинхронно сохраняю их в файлы в одной папке.
Может случиться так, что одновременно может быть 2-3 сбережения.
Иногда после нескольких накоплений программа вылетает, и я получаю:
Программа '...' вышла с кодом -1073741819 (0xc0000005)
«Нарушение доступа».
if (images % framesPerIO == 0 )
{
MediaComposition clone = composition.Clone();
int videoNumber = images / framesPerIO;
Debug.WriteLine("Reseting clip from" +videoNumber.ToString());
composition = new MediaComposition();
CreateVideo(videoNumber, clone);
}
private async Task CreateVideo(int videoNumber, MediaComposition clone)
{
Debug.WriteLine("Creating xml"+videoNumber.ToString());
StorageFile video = await storageFolder.CreateFileAsync("video" + videoNumber.ToString() + ".xml", CreationCollisionOption.ReplaceExisting);
Debug.WriteLine("xml Created" + videoNumber.ToString());
DateTime now = DateTime.Now;
Debug.WriteLine("SavingAsync XML " + video.DisplayName);
await clips.SaveAsync(video);
Debug.WriteLine("SavedAsync "+video.DisplayName + (DateTime.Now - now).ToString());
}
Теперь у меня есть 2 вопроса:
- Могу ли я сделать точку останова, чтобы узнать, где в коде
проблема случается?
- Может ли быть так, что нарушение доступа происходит
потому что нет последовательной памяти на диске, так как другой поток
начинает создавать новый файл? Если так, как я могу это исправить?