阻止开发人员调用 System.Windows.Forms.Application.DoEvents() 的最佳方法是什么?

2024-04-19

我们刚刚花费了 300 个工时来修复现场有问题的应用程序。这一切都归结为调用Application.DoEvents(重入问题)。

这并没有在设计审查、代码审查中得到体现。该代码是两年前在第一个版本中插入的;该应用程序总是“不稳定”,但最近的变化在更大程度上暴露了可重入问题。

这是我们组织中第二次因 Application.DoEvents 导致故障和多个工时的调试。在这种情况下,只需注意隐藏在异步任务的复杂事件处理程序中的调用即可发现这一点。

您建议采取什么措施来防止此问题再次发生:

  • 将签入门添加到源代码管理?
  • 开发人员培训?
  • 代码分析规则(为什么这还不是内置规则?)

如何加强编码实践?


每次集中构建应用程序时,请在每个程序集上运行此命令:

ildasm MyAssembly.exe /TEXT

然后在输出中搜索:

System.Windows.Forms.Application::DoEvents

如果找到,则将构建标记为失败,就像编译错误一样。

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

阻止开发人员调用 System.Windows.Forms.Application.DoEvents() 的最佳方法是什么? 的相关文章

  • 获取两个字符串之间的公共部分c# [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要的是获取两个单词之间的共同部分并获取差异 例子 场景1 word1 感言 word2 Test 将返回 公共部分Test 不同之
  • 在 OpenCL 中将函数作为参数传递

    是否可以在 OpenCL 1 2 中将函数指针传递给内核 我知道可以用C实现 但不知道如何在OpenCL的C中实现 编辑 我想做这篇文章中描述的同样的事情 在 C 中如何将函数作为参数传递 https stackoverflow com q
  • Blazor 与 Razor

    随着 Blazor 的发明 我想知道这两种语言之间是否存在显着的效率 无论是在代码创建方面还是在代码的实际编译 执行方面 https github com SteveSanderson Blazor https github com Ste
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 为什么 BOOST_FOREACH 不完全等同于手工编码的?

    From 增强文档 http www boost org doc libs 1 48 0 doc html foreach html foreach introduction what is literal boost foreach li
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 两组点之间的最佳匹配

    I ve got two lists of points let s call them L1 P1 x1 y1 Pn xn yn and L2 P 1 x 1 y 1 P n x n y n 我的任务是找到它们点之间的最佳匹配 以最小化它
  • 从 Orchard 内的主题渲染图像

    我刚刚选择 Orchard 来构建我的博客 作为创建这个新博客的努力的一部分 我正在创建一个自定义主题 这个自定义主题同时具有 CSS 和图像 我的问题 我的问题基本上可以归结为 如何渲染属于主题一部分的图像 到目前为止我已经尝试过的 我尝
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • C# 编译器如何决定发出可重定向的程序集引用?

    NET Compact Framework 引入了可重定向程序集引用 现在用于支持可移植类库 基本上 编译器会发出以下 MSIL assembly extern retargetable mscorlib publickeytoken 7C
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 从匿名类型获取值

    我有一个方法如下 public void MyMethod object obj implement 我这样称呼它 MyMethod new myparam waoww 那么我该如何实施MyMethod 获取 myparam 值 Edit
  • 哪些属性有助于运行时 .Net 性能?

    我正在寻找可用于通过向加载器 JIT 编译器或 ngen 提供提示来确保 Net 应用程序获得最佳运行时性能的属性 例如我们有可调试属性 http msdn microsoft com en us library k2wxda47 aspx
  • 如何打开 Windows 资源管理器窗口并选择特定文件夹

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

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are

随机推荐

  • VS Code 代码自动自动补全高亮

    当我在 VS Code 中使用自动完成功能时 所选文本会随突出显示的光标位置一起出现 这种突出显示会阻止 VS Code 提供进一步的建议 如何禁用此突出显示 我希望能够连续使用自动完成功能 而不必按 ESC 退出突出显示 VS代码1 44
  • 防止 Spark SQL 中的 SQL 注入 [重复]

    这个问题在这里已经有答案了 我正在使用 Spark SQL 从远程 MYSQL 数据库获取数据 我如何确保 SQL 注入不会发生 因为我似乎无法找到避免 Spark SQl 中 SQL 注入的方法 spark SparkSession bu
  • 计算和显示 ggplot2::geom_密度() 对象峰值的最佳方法是什么?

    我试图找到一种简单直观的方法来计算和显示 ggplot2 geom densis 对象的峰值 这个博客 http ianmadd github io pages PeakDensityDistribution html解释了如何在基础 R
  • python:与cgi脚本中的会话交互

    python cgi 脚本可以向会话写入和读取数据吗 如果是这样怎么办 是否有高级 API 或者我必须推出自己的类 没有 session on cgi 如果您使用的是原始会话 则必须滚动自己的会话处理代码cgi 基本上 会话的工作原理是创建
  • 如何制作仅在系统托盘中运行的 .NET Windows 窗体应用程序?

    我需要做什么才能制作Windows 窗体 https learn microsoft com en us dotnet desktop winforms overview view netdesktop 5 0应用程序能够在系统托盘中运行吗
  • Java:一维数组在内存中总是连续的吗?

    我读过的许多关于这个主题的书籍 文章 以及我使用 Unsafe 编写的一个小程序 都表明 Java 中的一维数组在内存中始终是连续的 那么它是 JLS 规定的还是实施约定 提出这个问题是为了确认这一指示 不 JVM 规范没有任何此类保证 h
  • 如何隐藏 Angular Material mdToast?

    app controller testCtrl function rootScope scope mdToast scope showHideToast function mdToast show template
  • Google Calendar API - 不获取重复事件实例

    我正在尝试使用 V3 API 从 Google 日历获取所有事件 我注意到有关重复事件的问题 对于某些日历上的某些重复事件 仅获取第一个实例 例如 获取总共 8 个实例中的前 5 个实例 一些额外的细节 我已经仔细检查查询日期范围是否正确
  • 协变“Self”类型无法从存储的属性初始值设定项中引用

    在下面的代码中 我不明白为什么在使用时会出现上述错误Self 如果我将其替换为 代码就可以正常工作Fireman final class Fireman var numOfServices 0 private init static var
  • 如何对两个并行数组进行排序? [复制]

    这个问题在这里已经有答案了 我有一个数字数组 int numoftoys 和一个并行的字符串数组 string names 其条目对应于数字 我的作业要求我对数字数组进行排序 因此当我打印时 它首先打印最大的数字 然后打印下一个最高的数字
  • Spring Cloud Config 客户端未从配置服务器加载值

    当我尝试运行 Spring Cloud Config Client 时 我遇到以下问题 Caused by java lang IllegalArgumentException Could not resolve placeholder D
  • Podspec - 排除除子文件夹之外的所有内容

    我有这样的结构 target files target1 target2 target3 例如 我只想包含 target2 并排除其他目标 我如何编写spec exclude files 我找到了这个排除文件的示例 但我不明白如何为整个文件
  • 多项式系数列表

    如何从 SymPy 中的系数列表创建多项式 例如 给定一个列表 1 2 1 我想得到Poly x 2 2 x 1 我试着看看docs http docs sympy org dev modules polys reference html但
  • 弹簧致动器上的不同端口

    我们有以下弹簧设置 我们的应用程序在端口 80 上运行 但我们的 managment server port 设置为 8081 并且我们已经使用此安全端口对管理端点进行多次检查 server port 80 management serve
  • CSS 在自定义 HTML 元素上无法正常工作

    我一直在尝试通过扩展来制作自定义 HTML 元素HTMLElement班级 我尝试通过链接与其他两个文件位于同一目录中的 CSS 文件来添加一些样式 index html and custom css 主文件夹 索引 html 自定义 cs
  • 禁用 Google 同意屏幕上的复选框

    我们正在使用 Gmail NET SDK 实现 Gmail 发送 ASP NET Web 应用程序 为此 我们需要以下所有范围 电子邮件 个人资料 openid https www googleapis com auth gmail sen
  • 如何自动化 xceed updown 控件

    对于我的 WPF 应用程序 我正在使用 TestStack White 进行 UI 自动化测试 我在我的应用程序中使用 xceed wpf 工具包中的 DoubleUpDown 控件 如何在 UI 自动化测试中访问 DoubleUpDown
  • 在imageview中播放动画GIF图像文件

    我正在制作一个 Android 应用程序 我想在其中播放图像视图中的 GIF 文件 我尝试了很多方法 制作了自定义类 但没有成功 以前有人实施过这个吗 您可以在 Android SDK 示例中找到示例代码 gif 图像显示在扩展的活动中Vi
  • 添加带有参数的事件侦听器,然后将其删除

    基本场景 这个问题之前已经被问过 其实有人问过标题几乎相同 https stackoverflow com questions 15088010 adding and removing event listeners with parame
  • 阻止开发人员调用 System.Windows.Forms.Application.DoEvents() 的最佳方法是什么?

    我们刚刚花费了 300 个工时来修复现场有问题的应用程序 这一切都归结为调用Application DoEvents 重入问题 这并没有在设计审查 代码审查中得到体现 该代码是两年前在第一个版本中插入的 该应用程序总是 不稳定 但最近的变化