.NET关于从数据库中读取照片的问题 5

在ADO.NET中读取数据库的图片中的二进制的数据,并将图片显示在image控件中,碰到一个问题:使用MemoryStream读取从存在数据库中的byte数组,最后将Me... 在ADO.NET中读取数据库的图片中的二进制的数据,并将图片显示在image控件中,碰到一个问题:使用MemoryStream读取从存在数据库中的byte数组,最后将MemoryStream,资源释放,Image控件上无法显示图片,而如果不释放MemoryStream的资源的时候,图片才会显示在控件上
部分代码:
MemoryStream ms = new MemoryStream(model.Photo);
BitmapImage img = new BitmapImage();

img.BeginInit();//表示BitmapImage初始化开始
img.StreamSource = ms;
img.EndInit();
//ms.Close();
//ms.Dispose();
imgPhoto.Source = img;
展开
 我来答
开竿鲶鱼
2015-01-23 · 超过26用户采纳过TA的回答
知道答主
回答量:61
采纳率:100%
帮助的人:21.4万
展开全部
说到最后没提问题,那我帮你提吧。
问:ms要怎样正确释放?
答:使用using语句自动释放。具体的你可以查查IDisposable接口和using语句。另外Close方法中调用了Dispose方法,显然你释放了两次。
另外再说一点,这里你没有使用using或者try-catch-finally ,你的ADO.NET我也很担心啊,很有可能你没有正确地释放SqlConnection和SqlCommand。
追问
我有用过using来释放资源,不过当我使用using来释放资源的时候,图片就不会显示在Image控件上这种方法不能把存放在数据库中的图片显示在Image控件上,去掉Using就可以。这是为什么?
还有就是在数据库的SqlConnection和SqlCommand。也有用using,
追答
既然要用到这个资源,那就不要释放啊,不需要显示了再释放
printf59277
2015-01-23 · TA获得超过1080个赞
知道大有可为答主
回答量:1812
采纳率:33%
帮助的人:1291万
展开全部
你调试看下这个img有没有值你就知道了,这里提前释放了MS 就把img.StreamSource = ms;这里的MS释放掉了 , ms是引用类型 ,SO。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式