ある種のタイミングの問題のように見えるバグを調査しているので、Delphi 7 でイベントがどのように機能するかについて少し興味があります。何が起こるかというと、COM インターフェイスを介してアプリケーションにデータが送信され、それが処理されます。 COM スレッドから発生するイベント。かなりの量のコードが含まれているイベントは、実行に時間がかかり、しばらくするとアプリケーション全体がクラッシュするようです。時間に影響を与える可能性のあるイベント内の大きな配列へのグラフィックスとスタッフィングへの呼び出しがあります。メモリ使用量の大幅な増加を見つけることができず、プロファイラーを実行してリークをチェックする機会がまだありませんでした。また、テストする明白なことは、より長い期間実行できるかどうかを確認するためだけに、その中のすべてのコードのイベントを削除することです.
Delphi では、イベントはシリアルですか、それともパラレルですか。つまり、イベントの実行中に新しいイベントを取得するとどうなりますか? ある種の自動スレッドで並行して実行されますか、無視されますか、それともキューに入れられますか?
キューに入れられた場合、アプリケーションがクラッシュする前にキューに何個入れることができますか?
大きな配列へのインデックス付けは、深くなるほど時間がかかりますか? 固定サイズでも?そうすべきではないと思うので、時間がかかるリークと割り当てを探しています。イベントを通じてオブジェクトが送信された場合、イベント内または「呼び出し」コード内で破棄する必要がありますか?
通常、Delphi でうまくスケーリングできないものは何ですか? 実行時間が長くなるものを探すにはどうすればよいですか?
最後に、これは COM に関連しているため、COM の一般的な落とし穴へのポインターは高く評価されますが、これは注意が必要です。ただし、共同初期化を把握しています。