OnPaint() 内部的 Graphics.Clear() 有时会导致一般 GDI+ 错误

2024-03-12

我正在开发一个应用程序,其中客户每隔几个月就会遇到一个问题(他们可以通过重新启动应用程序来解决该问题)。堆栈跟踪始终指向重写的第一行(类继承自Control) OnPaint()调用的方法e.Graphics.Clear().

我在微软的文档中读到:

Clear 方法清除图形对象的状态,当图形对象无法更新时不应调用。例如,如果在终端服务器会话中的安全桌面上调用 Clear 方法,则可能会发生ExternalException,从而使 Graphics 对象处于不一致的状态。

我已验证该应用程序的用户没有从远程计算机运行该应用程序。 我还读过:

在派生类中重写 OnPaint 时,请务必调用基类的 OnPaint 方法,以便注册的委托接收该事件。

应用程序当前未调用基类的事实可能是这样吗?OnPaint()导致出现“GDI+ 中发生一般错误”ExternalException 错误消息?

不幸的是,我在黑暗中尝试解决这个问题,因为我无法重现它,而且这种情况在生产场景中很少发生。有人可以提供一些见解吗?


If you create图形,始终使用它:

Using gr As Graphics = Graphics.FromImage(image)

    textSize = gr.MeasureString(myString, myFont) 'sample usage

End Using

另一方面,never Dispose()该对象you没有创造。 (包括实例Graphics...)当我们简化它时,在这种情况下它正在等待它的'End Using'其他地方——靠近它得到它的地方'Using'.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OnPaint() 内部的 Graphics.Clear() 有时会导致一般 GDI+ 错误 的相关文章

  • C# 如何使用 CallNtPowerInformation 和 Interop 来获取 SYSTEM_POWER_INFORMATION

    我正在尝试编写一个小程序 该程序作为服务运行并监视用户是否处于活动状态 如果用户空闲 没有鼠标 键盘 一个小时 则某些进程将被终止 如果用户使用 user32 dll 中的 LASTINPUTINFO 运行它 它就可以工作 但它不能作为服务
  • 策略模式还是命令模式?

    假设我有一个金融交易列表 我需要针对这些交易执行一系列验证规则 一个例子是我有一笔购买产品的交易 但是首先我需要验证交易中的帐户是否有足够的可用资金 产品没有售完等 由于这些规则 交易将是标记为拒绝 并应指定错误代码 当然 我正在考虑用一个
  • 如何在 VB.NET 中声明和初始化多维数组?

    我想做这个 Dim Numbers As Integer 1 2 3 4 5 6 7 IDE 的下划线4 5 6 7并说Array initializer has 3 too many elements 我究竟做错了什么 以下应该有效 Di
  • WCF WebHttp 混合身份验证(基本和匿名)

    所有这些都与 WebHttp 绑定有关 托管在自定义服务主机中 IIS 目前不是一个选项 我已经实现了自定义 UserNamePasswordValidator 和自定义 IAuthorizationPolicy 当我将端点的绑定配置为使用
  • 从另一个 FORM 中取回隐藏的 FORM

    我有两种形式Form1 and Form2 我正在打开Form2 from Form1 on button Click Form2 obj2 new Form2 this Visible false obj2 Show 然后我想回来Form
  • MSMQ接收和删除

    是否有任何选项可以在读取消息后将其从 MSMQ 中删除 比如 接收 删除可以作为原子操作运行吗 听起来您想查看下一条消息 然后在处理完成后接收它 Message message Queue Peek Queue ReceiveById me
  • PrivateObject 找不到属性

    我的结构基本上如下所示 abstract class A protected string Identificator get set private void DoSomething DoSomethingSpecific protect
  • 使用 IdentityDbContext 和 Code First 自动迁移表位置和架构的实体框架?

    我正在尝试使用 IdentityDbContext 类设置自动迁移更新 并将更改传播到整个数据库的实际 DbContext 在进入代码之前 在使用自动迁移实现 IdentityDbContext 时 我收到此错误 影响迁移历史系统表位置的自
  • 如何 XML 序列化 DateTimeOffset 属性?

    The DateTimeOffset当数据表示为 Xml 时 我在此类中拥有的属性不会呈现 我需要做什么来告诉 Xml 序列化将其正确呈现为DateTime or DateTimeOffset XmlRoot playersConnecte
  • 如何为 LINQ 查询构建动态 FROM 子句?

    我有一个标准 LINQ 查询 var list from x in SomeDataContext ViewName where Rest of where clause select x 我想知道是否可以构建动态 LINQ 查询 以便我可
  • 忽略挂起的更改中的某些文件

    这是我的问题 我已经更改了解决方案中的某些文件 假设是 Web config 并且永远不想签入 因为这些更改仅涉及我的计算机 有没有办法在 TFS 中忽略某个文件中的更改并将其从挂起的更改窗口中删除 当然 我可以在每次签入时跳过这个文件 但
  • Api 控制器中长时间运行的任务(使用 Web API,自托管 OWIN)

    我想在自托管 OWIN 环境中的 ApiController 中运行长时间运行的任务 例如 4 5 分钟 但是 我想在开始该任务后 一旦开始长时间运行的任务 就发回响应 而不等待它完成 这个长时间运行的任务与 HTTP 无关 并且顺序运行一
  • 如何将 Integer8 值转换为 DateTime?

    如何将 Integer8 类型值转换为 DateTime 类型值 特别是 我正在尝试获得帐户过期采用人类可读形式的 Active Directory 用户属性 SearchResult GetDirectoryEntry Propertie
  • Wix - 自定义安装目录

    我使用的是 Wix 3 x 用户应该能够选择目标目录 我的Setup wxs目前是这样的 http pastebin com uH1EjbDQ http pastebin com uH1EjbDQ 询问用户自定义目标目录的最简单方法是什么
  • Python tkinter.filedialog Askfolder 干扰 clr

    我主要在 Spyder 中工作 构建需要弹出文件夹或文件浏览窗口的脚本 下面的代码在spyder中完美运行 在 Pycharm 中 askopenfilename工作良好 同时askdirectory什么都不做 卡住了 但是 如果在调试模式
  • Couchbase v6.0:更新文档内容而不重置文档过期(TTL)值

    我正在使用 Net Couchbase SDK CouchbaseNetClient Package 创建一个新文档 并在执行此操作时设置该文档的到期值 到期 TTL 值设置正确并且工作正常 问题陈述 创建文档后 我需要更新我使用 N1QL
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • string.Compare 行为

    怎么会这样呢 这是从VS2008中的立即窗口获取的 string Compare 1 string Compare 0 0 1 从言论来看字符串比较 http msdn microsoft com en us library 84787k2
  • 过度使用委托对性能来说是一个坏主意吗? [复制]

    这个问题在这里已经有答案了 考虑以下代码 if IsDebuggingEnabled instance Log GetDetailedDebugInfo GetDetailedDebugInfo 可能是一个昂贵的方法 因此我们只想在调试模式
  • 如何打开 Windows 资源管理器窗口并选择特定文件夹

    我有一个 winform 应用程序 这个 winform 应用程序创建了几个文件 我想在我的应用程序中实现 查找目标 功能来显示这些文件 这些文件位于同一文件夹中 看图片 假设我创建了几个文件 C Test 文件夹 该文件夹包含以下文件 C

随机推荐

  • jQuery mouseoverIntent 不起作用,但悬停可以

    我有以下代码 document ready function yearInner hide year this hover function yearInner this slideToggle 它隐藏了带有 YearInner 类的 di
  • 如何删除选取框中的尾随空格?

    我开发了一个不断向上移动的大帐篷 但确切的问题是 在滚动完最后一个图像后 第一个图像和最后一个图像之间存在巨大的差距 我只想删除附加到最后一张图像底部的尾随空格 有没有人帮我找出解决方案 提前致谢 HTML div style margin
  • @font-face 在 Firefox 中不起作用?

    这是由 FontSquirrel 生成的代码 在所有其他浏览器 包括 IE 中都可以正常工作 但在强大的 Firefox 中却不行 我究竟做错了什么 ps 我使用的是FF3 5 如果您无法查看我的示例 请参阅以下来源
  • Android手机休眠时网络访问

    我正在使用警报组合 设置为AlarmManager 和后台服务定期同步我的应用程序中的数据 我遇到的唯一问题是 当睡眠策略终止 Wi Fi 连接时 同步将不再起作用 有没有办法 唤醒 已进入睡眠状态的 Wi Fi 连接 GMail 以某种方
  • XA/JTA 事务还在使用吗?

    我有一个与多个数据库和一些自定义服务交互的应用程序 对于某些操作 我需要类似事务的行为 其中一组更改要么跨所有数据库 服务提交 要么在发生错误时全部回滚 X Open 组的 XA 标准和 Java JTA 似乎使用两阶段提交过程正好解决了这
  • 如何在 Haskell 中连接变量参数?

    Shell monad 支持可变参数 https hackage haskell org package shell monad 0 6 9 docs Control Monad Shell html t CmdParams 但是我找不到一
  • 如何从供应商目录生成 laravelcomposer.json? [复制]

    这个问题在这里已经有答案了 在我的 Laravel 项目中composer json and composer lock文件被删除了 不知道如何重建composer json从现有的文件vendor目录 Note 使用此方法的缺点是主com
  • SwiftUI:如何获取动态列表或 LazyVStack 中的视图框架

    我想在 LazyVStack 中获取视图的框架 嵌入 ScrollView 中的 LazyVStack 显示聊天消息 文本和图像 因为内容是动态调整大小的 所以我无法使用 GeometryReader 代理 将 GeometryReader
  • 如何在抽象类中声明重载运算符并在派生的非抽象类中重写它?

    我正在尝试编写一个带有一些纯虚拟二元运算符的抽象类 这些运算符应该由派生类实现以实现运算符多态性 这是一个简化的示例 class Base public virtual const Base operator const Base cons
  • Jquery:对一个 .click 事件使用两个选择器?

    如果我有这样的事情 jq elements children input click function 如何向其中添加另一个选择器 以便单击任一选择器时都会触发相同的事件 基本上需要这样的东西 jq elements jq another
  • 如何确定特定 Sql Server 2000 数据库中任何记录的最后更改时间?

    我有一个很少更新的 SQL Server 2000 数据库实例 我还有一个数据库表 其中没有保存每行的创建日期或修改日期的列 有什么方法可以确定上次对整个数据库执行更新或插入的时间 以便我至少可以限制表中的特定记录何时可能发生更改 注意 我
  • “盒子模型”CSS 有多少种类型?

    盒子模型 CSS 有多少种类型 CSS3 有两种盒子模型 content box and border box content box是默认值 content box content box是自 CSS 版本 1 以来默认的 CSS 盒子模
  • 当 onclientclick 为 false 时阻止 onclick 触发?

    是否可以使用onclientclick用于进行客户端检查的按钮的属性 如果支票退回true 然后开火onclick甚至 如果客户端检查返回false 不要开火onclick event 那可能吗 UPDATE 这两个工作 Stops the
  • BigQuery 物化视图 - 组中最后一个

    在 BigQuery 中 是否可以创建一个物化视图 其中包含基表中每个组的最新行 e g CREATE TABLE basetable group id INT64 timestamp TIMESTAMP value FLOAT64 INS
  • 求和面积表 (SAT) 的 3D 变体

    根据维基百科 A 面积求和表 http en wikipedia org wiki Summed area table是一种数据结构和算法 用于快速有效地生成网格矩形子集中的值之和 对于二维空间 可以通过迭代生成求和面积表x y超过所需的范
  • 使用 LinearLayoutManager 滚动到 RecyclerView 顶部

    我有一个片段 其中有RecyclerView with LinearLayoutManager其中有CardView项目 有一个浮动操作按钮 单击该按钮 项目将滚动到顶部 我尝试过使用scrollToPosition也scrollToPos
  • 我应该如何使用 RSpec 全局存根一个方法?

    我正在开发 Rails 应用程序 我正在尝试在全球范围内存根一个方法 我正在做的是将其存根到 RSpec 配置中 在before suite 块如下 RSpec configure do config config before suite
  • 如何在android中设置带有自定义声音的通知

    我将 mp3 kalimba mp3 文件复制到raw文件夹中的res文件夹 但是 当触发通知时 它会产生默认声音 这就是我发出通知的方式 protected void GenerateNotify NotificationManager
  • 将表单数据发送到服务器后出现“json 解析器错误”

    function ajax form submit function console log this serializeArray result text JSON stringify this serializeArray return
  • OnPaint() 内部的 Graphics.Clear() 有时会导致一般 GDI+ 错误

    我正在开发一个应用程序 其中客户每隔几个月就会遇到一个问题 他们可以通过重新启动应用程序来解决该问题 堆栈跟踪始终指向重写的第一行 类继承自Control OnPaint 调用的方法e Graphics Clear 我在微软的文档中读到 C