我重新编译某个单元(MyClass)后收到访问冲突,除非我进行清理。该错误显然是对空对象的调用(地址写入 00000000),但是当我尝试单步执行时,编译器不允许我单步执行我认为发生错误的代码。(在同一对象的方法内。当我跟踪该方法时,在跟踪到该方法之后但在转到代码行之前出现错误。)这发生在 MyClass 的使用单元中,而不是 MyClass 本身。
奇怪的是,如果我进行清理(或构建)然后重新编译,程序运行良好。有什么理由会发生这种情况?
更新
该应用程序使用通过 AsyncCalls 库创建的多个线程。我使用几个TEvent
和TMultiReadExclusiveWriteSynchronizer
对象来保持流程有序并保护资源。创建或释放此类对象时是否需要特别注意?