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

Ala*_*ark 5 c# drawing exception winforms

当我的应用程序运行并且系统从休眠状态恢复时(在Windows 7中),我遇到了一个奇怪的问题.

我正在调用Graphics.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));
}
Run Code Online (Sandbox Code Playgroud)

这实际上是ToolStripLabel的子类.

Phi*_*ght 2

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

using(SolidBrush drawBrush = new SolidBrush(ForeColor))
    e.Graphics.DrawString(Text, Font, drawBrush, new PointF(x, y));
Run Code Online (Sandbox Code Playgroud)