Winforms Drawing - 参数在系统恢复时无效

时间:2011-06-30 19:45:22

标签: c# winforms exception drawing

当我的应用程序正在运行且系统从休眠状态恢复时(在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的子类。

1 个答案:

答案 0 :(得分:2)

许多系统资源在睡眠或休眠后变为无效。因此,您的Font可能无效,因为这是此类问题的常见原因。另外我注意到你没有在SolidBrush上调用Dispose,你应该这样做以防止资源韭菜。像这样......

using(SolidBrush drawBrush = new SolidBrush(ForeColor))
    e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));