当我的应用程序正在运行且系统从休眠状态恢复时(在Windows 7中),我遇到了一个奇怪的问题。
我正在调用Graphics.DrawString方法,这在大多数时候都可以正常工作。除了程序运行并且我休眠系统。然后当我恢复时,DrawString方法抛出一个ArgumentException(参数无效)并给我一个红色十字架,我的绘图应该是。
这里出了什么问题?捕获异常会避免红叉,但是当我们进入此状态时,无法返回,并且异常将在程序重新启动之前一直被抛出。
感谢您的帮助, 艾伦
编辑:以下是失败的代码:
protected override void OnPaint(PaintEventArgs e)
{
// Drawing logic succeeds until this point
e.Graphics.DrawString(Text, Font, new SolidBrush(ForeColor), new PointF(x, y));
}
这实际上是ToolStripLabel的子类。
答案 0 :(得分:2)
许多系统资源在睡眠或休眠后变为无效。因此,您的Font可能无效,因为这是此类问题的常见原因。另外我注意到你没有在SolidBrush上调用Dispose,你应该这样做以防止资源韭菜。像这样......
using(SolidBrush drawBrush = new SolidBrush(ForeColor))
e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));