.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; 展开
部分代码:
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; 展开
2个回答
展开全部
说到最后没提问题,那我帮你提吧。
问:ms要怎样正确释放?
答:使用using语句自动释放。具体的你可以查查IDisposable接口和using语句。另外Close方法中调用了Dispose方法,显然你释放了两次。
另外再说一点,这里你没有使用using或者try-catch-finally ,你的ADO.NET我也很担心啊,很有可能你没有正确地释放SqlConnection和SqlCommand。
问:ms要怎样正确释放?
答:使用using语句自动释放。具体的你可以查查IDisposable接口和using语句。另外Close方法中调用了Dispose方法,显然你释放了两次。
另外再说一点,这里你没有使用using或者try-catch-finally ,你的ADO.NET我也很担心啊,很有可能你没有正确地释放SqlConnection和SqlCommand。
追问
我有用过using来释放资源,不过当我使用using来释放资源的时候,图片就不会显示在Image控件上这种方法不能把存放在数据库中的图片显示在Image控件上,去掉Using就可以。这是为什么?
还有就是在数据库的SqlConnection和SqlCommand。也有用using,
追答
既然要用到这个资源,那就不要释放啊,不需要显示了再释放
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询