特定のユニット (MyClass) をクリーンアップしない限り再コンパイルすると、アクセス違反が発生します。エラーは明らかにヌル オブジェクト (アドレス 00000000 の書き込み) への呼び出しですが、ステップ実行しようとすると、エラーが発生していると思われるコードにステップ インすることがコンパイラによって許可されません。(同じオブジェクトのメソッド内。メソッドをトレースすると、トレースをヒットした後、コード行に移動する前にエラーが発生します。) これは、MyClass 自体ではなく、MyClass の使用済みユニットで発生します。
奇妙なことに、クリーン (またはビルド) を行ってから再コンパイルすると、プログラムは正常に実行されます。これが起こる理由は何ですか?
アップデート
アプリケーションは、AsyncCalls ライブラリを介して作成された複数のスレッドを使用します。私はいくつかTEvent
のTMultiReadExclusiveWriteSynchronizer
オブジェクトを使用して、プロセスの順序を維持し、リソースを保護しています。そのようなオブジェクトを作成または解放するときに特別な注意が必要ですか?