非ブレークポイントを使用して、コントロールの OnMouseMove イベント ハンドラーにいくつかの値を記録しようとしていました。マウスがコントロール上でアイドル状態 (動かない) である間、ブレークポイントが常にヒットしていることに気付きました。
少し調査した結果、ブレークポイントがこの動作の原因であるという結論に達しました。この問題は、次の例で簡単に再現できます。ブレークポイントが有効になっている場合、マウスがフォーム上にある間、カウンターは常にインクリメントされます。ブレークポイントが無効になっている場合、カウンターはマウスがフォーム上に移動したときにのみ増加します。
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
public
FCounter: Integer;
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Inc(FCounter);
Edit1.Text := IntToStr(FCounter);
end;
必要な情報をログに記録する他の方法を見つけることができますが、元のアプローチを使用できる回避策があることを知りたいです。