C#中Bitmap a=new Bitmap()令a为panel的背景图,之后更改背景图为b后,a的资源是否会自动释放?
因为令panel.backgroundimage=a;后无法进行a.dispose()操作,而且更改背景图的过程非常频繁,担心占用资源过多而没有进行释放......
因为令panel.backgroundimage=a;后无法进行a.dispose()操作,而且更改背景图的过程非常频繁,担心占用资源过多而没有进行释放...
展开
4个回答
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()操作了.
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()操作了.
展开全部
.net的垃圾回收是自动运行的,但运行时机无法由用户指定,其内部算法和系统资源可用量及CPU空闲时间有关。
然而垃圾回收本身是消耗资源的,所以运行时会尽量减少回收次数。
你的Bitmap实例a在不再使用后,将可能在下一次垃圾回收时被清除,但确切时间是无法掌握的。
然而垃圾回收本身是消耗资源的,所以运行时会尽量减少回收次数。
你的Bitmap实例a在不再使用后,将可能在下一次垃圾回收时被清除,但确切时间是无法掌握的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该问题不大,如果你确实要自己释放,可以用垃圾回收相关的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个是不会自动释放的,因为是非托管资源,所以使用完之后肯定需要调用dispose()方法。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询