温馨提示:本文翻译自stackoverflow.com,查看原文请点击:model view controller - C#

model view controller - C#

发布于 2020-03-28 23:36:52

如我的代码所示,上载的图像文件有时被读取为空(fileContents设置为0)或一半被读取。正如我已经测试过的那样,fileContents当我逐渐从调试模式过渡myViewModel.File.CopyToAsync(memoryStream);myViewModel.Image =...使用调试模式,可以看到它正在接收正确的值因此,我相信memorystream副本存在问题,但是我不明白为什么。

但是,当我通过删除注释来休眠线程时,将正确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 };
            }
        }

查看更多

查看更多

提问者
DA_VDCT
被浏览
15
Devesh S 2020-01-31 17:53

您不等待 myViewModel.File.CopyToAsync(memoryStream)完成。

无论使用

await myViewModel.File.CopyToAsync(memoryStream);

或根本不使用异步:

myViewModel.File.CopyTo(memoryStream);

发布
问题

分享
好友

手机
浏览

扫码手机浏览