我们刚刚花费了 300 个工时来修复现场有问题的应用程序。这一切都归结为调用Application.DoEvents(重入问题)。
这并没有在设计审查、代码审查中得到体现。该代码是两年前在第一个版本中插入的;该应用程序总是“不稳定”,但最近的变化在更大程度上暴露了可重入问题。
这是我们组织中第二次因 Application.DoEvents 导致故障和多个工时的调试。在这种情况下,只需注意隐藏在异步任务的复杂事件处理程序中的调用即可发现这一点。
您建议采取什么措施来防止此问题再次发生:
- 将签入门添加到源代码管理?
- 开发人员培训?
- 代码分析规则(为什么这还不是内置规则?)
如何加强编码实践?
每次集中构建应用程序时,请在每个程序集上运行此命令:
ildasm MyAssembly.exe /TEXT
然后在输出中搜索:
System.Windows.Forms.Application::DoEvents
如果找到,则将构建标记为失败,就像编译错误一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)