C# 如何释放GDI资源 注释当中有详细错误 10

publicvoidSetCursor(Bitmapcursor,PointhotPoint)//修改鼠标图标{inthotX=hotPoint.X;inthotY=ho... public void SetCursor(Bitmap cursor, Point hotPoint)//修改鼠标图标
{
int hotX = hotPoint.X;
int hotY = hotPoint.Y;
myNewCursor = new Bitmap(cursor.Width * 2 - hotX, cursor.Height * 2 - hotY);//设置鼠标图标大小
g = Graphics.FromImage(myNewCursor);
g.Clear(Color.FromArgb(0, 0, 0, 0));
g.DrawImage(cursor, cursor.Width - hotX, cursor.Height - hotY, cursor.Width, cursor.Height);
this.Cursor = new Cursor(myNewCursor.GetHicon());
//引发的异常:“System.Runtime.InteropServices.ExternalException”(位于 System.Drawing.dll 中)其他信息: GDI + 中发生一般性错误。
g.Dispose();
myNewCursor.Dispose();

}

每次狂点鼠标就会有错误

这个程序是把鼠标图标改为其他 每次单击左键时一个样式,不单击时一个样式
展开
 我来答
百度网友5baeb6a
2016-12-16 · TA获得超过139个赞
知道答主
回答量:122
采纳率:0%
帮助的人:27.4万
展开全部

给你这个方法加锁

//调用处
lock setCursor(bitmap,point);

这样就不会出现狂点鼠标导致的异常,这个异常出现是应为上次都还没结束又再次被激活了导致的

更多追问追答
追问
"void”不是 lock 语句要求的引用类型
追答
 private object locker = new object();
 
  lock (locker)
   {
               setCursor(bitmap,point)
    }

 我家里的电脑没转VS所以你试下,不行你就搜一下lock的用法

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式