不是垃圾自动回收吗?干吗还要用 Graphics.Dispose()?

fanciex 2006-06-27 03:01:25
经常看到GDI+的例子中,Graphics 手动调用 Dispose(),有必要吗?写这句又会如何?
如下:

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = this.CreateGraphics();
g.Clear(this.BackColor);
DrawPerson();
//画一幅图像
Image curImage = Image.FromFile(@"e:\photo.jpg");
g.DrawImage(curImage, 0, 0, curImage.Width, curImage.Height);
g.Dispose();
}
...全文
372 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
vosov 2006-06-27
  • 打赏
  • 举报
回复
GC进行回收的时间是不确定的。所以很占资源的东西最好一使用完就立刻手动释放
BlueDog 2006-06-27
  • 打赏
  • 举报
回复
可以参考我Blog上的一篇文章
http://blog.csdn.net/BlueDog/archive/2006/05/08/712228.aspx
mmens 2006-06-27
  • 打赏
  • 举报
回复
Dispose会告诉GC,当前对象可以回收了。
否则的话,GC只能靠自己的一套规则去判断回收。
而且GC并不是很快就回收的,是有回收周期的。

唉。。。不过GC真的很弱,有时候想释放对象很难,特别是非托管的对象!
fanciex 2006-06-27
  • 打赏
  • 举报
回复
不写这句又会如何?

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧