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

Bil*_*ill 3 .net c# vb.net

我们花了300个工时来修复现场的错误应用程序.这一切都归结为调用Application.DoEvents(re-entrancy problem).

这没有在设计评论,代码评论中发现.两年前插入的代码是第一个版本; 应用程序总是"不稳定",但最近的变化在很大程度上暴露了重新入侵问题.

此事件是我们组织中第二次发生Application.DoEvents导致失败和多人工作时间的调试.在这种情况下,通过简单地注意到调用,在一个异步任务的复杂事件处理程序中埋下来,就发现了它.

你有什么建议可以防止这个问题再次发生:

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

如何执行编码练习?

Dan*_*ker 8

每次集中构建应用程序时,在每个程序集上运行它:

ildasm MyAssembly.exe /TEXT
Run Code Online (Sandbox Code Playgroud)

然后搜索输出:

System.Windows.Forms.Application::DoEvents
Run Code Online (Sandbox Code Playgroud)

如果找到,请将构建标记为失败,就好像它是编译错误一样.