Поскольку мой код показан ниже, загруженный файл изображения иногда читается пустым (fileContents
устанавливается в 0) или читается наполовину. Как я уже проверял, я мог видеть, что fileContents
получает правильное значение, когда я медленно переключаюсь с myViewModel.File.CopyToAsync(memoryStream);
на myViewModel.Image =...
в режиме отладки. Поэтому я считаю, что есть проблема с копией потока памяти, но я не понимаю, почему.
Однако, когда я засыпаю поток, удаляя закомментированный System.Threading.Thread.Sleep(1000);
, тогда чтение изображения выполняется правильно, а fileContents
получить правильное значение. Может ли проблема быть вызвана декларацией using (var memoryStream = new MemoryStream())
? В чем заключается проблема, и есть ли лучший способ исправить эту проблему, а не спать поток?
if (myViewModel.File != null)
{
byte[] fileContents;
using (var memoryStream = new MemoryStream())
{
myViewModel.File.CopyToAsync(memoryStream);
//System.Threading.Thread.Sleep(1000);
fileContents = memoryStream.ToArray();
myViewModel.Image = new MyImage{ FileName = myViewModel.File.FileName, File = myViewModel.File, ContentType = myViewModel.File.ContentType, FileData = fileContents };
}
}