微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 内存流不可扩展

我正在尝试阅读一个电子邮件附件,我正在获得一个“内存流不可扩展”的错误.我研究了这一些,大多数解决方案似乎与确定缓冲区大小有关,但我已经在做.我对内存流不是很有经验,所以我想知道为什么这是一个问题.谢谢.
foreach (MailMessage m in messages)
{
   byte[] myBuffer = null;
   if (m.Attachments.Count > 0)
   {
      //myBuffer = new byte[25 * 1024];  old way 
      myBuffer = new byte[m.Attachments[0].ContentStream.Length];
      int read;
      while ((read = m.Attachments[0].ContentStream.Read(myBuffer,myBuffer.Length)) > 0)
      {
          // error occurs on executing next statement
          m.Attachments[0].ContentStream.Write(myBuffer,read);
      }

      ... more unrelated code ...

解决方法

如果您通过预先分配的字节数组创建了一个MemoryStream,则它不能展开(即,比您在启动时指定的大小更长).相反,为什么不使用:
using (var ms = new MemoryStream())
{
   // Do your thing,for example:
   m.Attachments[0].ContentStream.copyTo(ms);

   return ms.ToArray(); // This gives you the byte array you want.
}

原文地址:https://www.jb51.cc/csharp/94668.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐