gpt4 book ai didi

c# - Winform 出现 Red X 异常

转载 作者:太空宇宙 更新时间:2023-11-03 20:14:19 25 4
gpt4 key购买 nike

我正在使用第 3 方控件 (ComponentOne),我会间歇性地得到这个典型的红色 X 框,如这个典型的图像所示。起初我以为我有 GDI 泄漏,所以在做了一些腿部工作后,我确认我的 GDI 编号在绘制控件时没有问题。

enter image description here

在谷歌搜索后我发现这种错误发生在 OnPaint() 事件上,因此即使我在调用控件渲染时 try catch ,它也不会捕获它。

所以我的下一步是在我的代码中覆盖以下内容。

        protected override void OnPaint(PaintEventArgs e)
{
try
{
base.OnPaint(e);
}
catch (Exception ex)
{
this.Invalidate(); //attempt to redraw the control
XmSam.Log(ex);
}
}

我认为这应该可以解决问题,但我不能一直重现这个问题,所以我还不能完全测试上面的代码。我的问题是,如果我呈现我的控件并且它有异常,那么这段代码将尝试重绘控件。这会陷入无限循环并卡住我的 UI 吗?还是您认为导致异常的任何原因都会消失,并且在第二次重绘控件时应该可以正常渲染?

最佳答案

I think that should do the trick

不,你让事情变得更糟了。现在您的 OnPaint() 方法一遍又一遍地运行,可能会反复遇到同一个异常。您也会看到您的程序也 100% 消耗了核心资源。

在 OnPaint() 中获得异常并不是您真正可以生存的事情。用户无需查看任何内容,这是有保证的支持电话。与其隐藏问题,不如使用异常找出实际出错的地方并修复问题。使用 Debug + Exceptions,勾选 CLR 异常的 Thrown 复选框,这样调试器将在引发异常时停止。以防万一,在框架代码中引发异常的可能性不大,还可以使用工具 + 选项、调试并取消选中“仅启用我的代码”选项。

关于c# - Winform 出现 Red X 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17927128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com