我正在处理用户控件,我想在其上执行一些绘画(例如DrawBorder)。这工作正常,但在一个场景中抛出ExternalException(gdi +中发生了一般错误);
我使用远程桌面连接从PC2访问PC1(远程PC)。 PC1(远程PC)正在运行我的应用程序,如果我最小化PC2上的RemoteDesktopConnection窗口。
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.Clear(Color.Black); //Exception is thrown here
DrawBorder(e.Graphics);
base.OnPaint(e);
}
根据MSDN page on Graphics.Clear:
Clear方法清除图形对象的状态,应该 当图形对象无法更新时不被调用。例如, 如果在终端服务器中的安全桌面上调用Clear方法 会话,可能会发生ExternalException,留下Graphics对象 处于不一致的状态。
如何摆脱这个问题?有没有办法在调用Clear方法之前验证图形对象?
This question陈述了类似的问题,但该问题的OP无法重现它。但就我而言,每次执行上述代码时都会发生这种情况。