C#中Bitmap a=new Bitmap()令a为panel的背景图,之后更改背景图为b后,a的资源是否会自动释放?

因为令panel.backgroundimage=a;后无法进行a.dispose()操作,而且更改背景图的过程非常频繁,担心占用资源过多而没有进行释放...... 因为令panel.backgroundimage=a;后无法进行a.dispose()操作,而且更改背景图的过程非常频繁,担心占用资源过多而没有进行释放... 展开
 我来答
匿名用户
2012-10-15
展开全部
先用null过渡下,
panel.backgroundimage=null,
panel.backgroundimage=b,
再a.dispose();
如果还不行,就用byte读取文件.
BinaryReader binReader = new BinaryReader(File.Open(filePath, FileMode.Open));
FileInfo fileInfo = new FileInfor(filePath);
byte[] bytes = binReader.ReadBytes((int)fileInfo.Length);
binReader.Close();

BitmapImage a = new BitmapImage();
a.BeginInit();
a.StreamSource = new MemoryStream(bytes);
a.EndInit();
就可以进行a.dispose()操作了.
heroius
2012-10-15 · TA获得超过1179个赞
知道小有建树答主
回答量:746
采纳率:0%
帮助的人:249万
展开全部
.net的垃圾回收是自动运行的,但运行时机无法由用户指定,其内部算法和系统资源可用量及CPU空闲时间有关。
然而垃圾回收本身是消耗资源的,所以运行时会尽量减少回收次数。
你的Bitmap实例a在不再使用后,将可能在下一次垃圾回收时被清除,但确切时间是无法掌握的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
runjiu
2012-10-15 · TA获得超过328个赞
知道小有建树答主
回答量:715
采纳率:50%
帮助的人:241万
展开全部
应该问题不大,如果你确实要自己释放,可以用垃圾回收相关的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nickzhoufly
2012-10-15 · TA获得超过139个赞
知道答主
回答量:82
采纳率:100%
帮助的人:27万
展开全部
这个是不会自动释放的,因为是非托管资源,所以使用完之后肯定需要调用dispose()方法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式