请教高手,多线程抢Graphics问题 现在我起了一个线程对Panel进行绘图,可是当panel的onPaint方法触发时(我在onPaint方法中加入了绘图代码),经常发生抢Graphics资源问题,报Object is in use 错误。请问有没有什么好的方法来处理多线程抢Graphics的问题。谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果只在onPaint方法中绘图,不会发生同步(抢资源)问题。可能你要贴代码了。 一般的情况实在需要Graphics操作的地方加并发锁还是得看具体代码 private void mainPanel_Paint(object sender, PaintEventArgs e) { //重绘bitmap if (bit != null && !graLockFlag) { Graphics graw = mainPanel.CreateGraphics(); graw.DrawImage(bit, new Point(0, 0)); // 对已经存在的bitmap绘图 graw.Dispose(); } }然后就是线程中调用 Draw()方法,里面进行了复杂的绘图,最终也是将bitmap绘制到mainPanel上 private void mainPanel_Paint(object sender, PaintEventArgs e) { if (bit != null && !graLockFlag) { e.Graphic.DrawImage(bit, new Point(0, 0)); } } 线程不应该中调用Draw()方法。它应该准备好你的那个bit图,然后要求mainPanel重画:{ bit = ...; mainPanel.Invalidate();} WPF中这么实现想HTML中图像平铺的效果 AxSpreadsheet问题 全局热键 最后一点分,请教一个比较难的问题 怎样在点击一个按钮的时候触发另一个按钮的点击事件 今天是春节祝各位朋友新年快乐!万事如意!心想事成!鼠年吉祥 求一段C#代码 能够修改本机时间 ADO.NET 2 treeview 子节点影响父节点 请大家帮忙介绍一下CrystalReport的具体使用方法 第一次生成水晶报表时总是要等待5秒,想做个进度条,哪位给个思路 VS2005老抽风 不知道有没有解决方法~~~
还是得看具体代码
{
//重绘bitmap
if (bit != null && !graLockFlag)
{
Graphics graw = mainPanel.CreateGraphics();
graw.DrawImage(bit, new Point(0, 0)); // 对已经存在的bitmap绘图
graw.Dispose();
}
}然后就是线程中调用 Draw()方法,里面进行了复杂的绘图,最终也是将bitmap绘制到mainPanel上
{
if (bit != null && !graLockFlag)
{
e.Graphic.DrawImage(bit, new Point(0, 0));
}
}
线程不应该中调用Draw()方法。
它应该准备好你的那个bit图,然后要求mainPanel重画:
{
bit = ...;
mainPanel.Invalidate();
}