0

List<T>タイプの がありVideoます。クラスは次のVideoようになります。

public class Video {
  public bool IsActive { get; set; }
  public string Name { get; set; }
  private int videoID;
  public int VideoID {
    get { return videoID; }
    set {
      if (Equals(value, videoID)) return;
      videoID = value;
    }
  }
}

まだ再現できていない複雑なシナリオがあるため、正確な答えを探しているわけではありませんが、デバッグに役立ついくつかの理論的な可能性を探しています。

シナリオ

カスタム を含むビューが読み込まれますListBoxMeasureOverride()値を検査するためにオーバーライドされた後、すぐに を呼び出しますbase.MeasureOverride()。を実行する前に、アイテムのいずれかでリスト内base.MeasureOverride()の値を検査するために設定した Parallel Watch が適切な値になります。VideoIDとしましょう138。一歩前進すると、値は「魔法のように」別のものに一貫して変化しました158. でのブレークポイントVideoID.setはヒットしません。

デバッガーがブレークポイントに到達することなく、オブジェクトの値を操作するにはどうすればよいでしょうか? 私の推測はリフレクションです - 私はfastJSON逆シリアル化のために ( ) を使用しています。

アイデアをお寄せいただきありがとうございます。

編集

(1) プライベート フィールドは、get および set のクラスでvideoIDのみ参照されます。VideoVideoID

(2) 私が持っているもう 1 つの疑いは、ビューが読み込まれた後の特定の期間に発生するように見える理由であり、必ずしもコード内の一貫したポイントで発生するとは限らない別のスレッドの何かです。base.MeasureOverride()[私にとって]時間のかかる機能であり、このバグの原因に私がどこにもいない可能性をほのめかしています。

(3) VideoID が自動プロパティの場合でも、この問題が発生することも付け加えておきます。したがって、私の例のバッキング フィールドと関係があることを合理的に受け入れることはできません。

4

1 に答える 1