反复调用3500次左右出错,GDI和Icon比较熟的来

starj1 2006-02-23 03:53:09
try
{
Int32 I=0;
while(true)
{
System.Drawing.Bitmap bmpT=new Bitmap(16,16);
//下面几行去掉则不出错!
for(Int32 i=0;i<10;i++)
{

bmpT.SetPixel(rndT.Next(16),rndT.Next(16),
System.Drawing.Color.FromArgb(rndT.Next(255),rndT.Next(255),rndT.Next(255)));
}
//就是上面几句。。。
System.Drawing.Graphics gpT=System.Drawing.Graphics.FromImage(bmpT);
this.Icon =System.Drawing.Icon.FromHandle(bmpT.GetHicon());
gpT.Dispose();
bmpT.Dispose();
I++;
}
}
catch (Exception E)
{
System.Console.WriteLine("I="+I);
System.Console.WriteLine(E.Message);
this.Close();
}
==============================================
I=3320
GDI+ 中发生一般性错误。
程序“[588] Study.exe”已退出,返回值为 0 (0x0)。
==============================================

怎么回事????????
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jgmstar 2006-05-24
  • 打赏
  • 举报
回复
可以自己先建几十个Icon备用,需要的时候再拿出来,就不用考虑销毁的问题了。
Samen168 2006-03-02
  • 打赏
  • 举报
回复
呵呵,死循环在执行一定次数后会报堆栈溢出
diandian82 2006-03-02
  • 打赏
  • 举报
回复
我觉得是系统的保护功能吧,你那时一个死循环系统以为出错了所以就退出了
starj1 2006-03-02
  • 打赏
  • 举报
回复
需要什么权限?请教。
starj1 2006-03-02
  • 打赏
  • 举报
回复
应该不是死循环和堆栈溢出的问题,我在上的的例子是改了一下代码让大家看的,实际我是在Timer_Tich事件中反复执行中间的代码出错。
我的认为是GDI没有自动释放无用的Icon句柄,导致Icon的句柄溢出,但是又找不到相应的函数可以释放Icon句柄。唉。。。
syeerzy 2006-03-02
  • 打赏
  • 举报
回复
应该是堆栈溢出.

你都catch了,该设个断点,从 E 里面多监视一些信息.
chinahuman 2006-03-02
  • 打赏
  • 举报
回复
就是楼上的几位说的问题
lulei 2006-02-24
  • 打赏
  • 举报
回复
权限问题

110,536

社区成员

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

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

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