0

WPF MVVM アプリケーションで ConcurrentQueue を ViewModel クラス フィールドとして定義します。

private ConcurrentQueue<AGC_DataRecordToSave> _agcAbsoluteDataRecordsToSaveBuf = new ConcurrentQueue<AGC_DataRecordToSave>();

以下は AGC_DataRecordToSave の定義です。

/// <summary>
/// Structure of record to write in CSV-file.
/// </summary>
public class AGC_DataRecordToSave
{
    #region Public Fields

    /// <summary>
    /// Date
    /// </summary>
    public DateTime Data;
    /// <summary>
    /// Time
    /// </summary>
    public TimeSpan Time;
    /// <summary>
    /// Measuring Ultrasonic Beam.
    /// </summary>
    public int MeasuringBeam;
    /// <summary>
    /// Direction.
    /// </summary>
    public string Direction;
    /// <summary>
    /// Value from outer device.
    /// </summary>
    public double Value;

    #endregion
}

次に、System.Windows.Threading.DispatcherTimer tick ハンドラー (同じクラス内) で、次のことを行います。

AGC_DataRecordToSave record = new AGC_DataRecordToSave();
record.Data = new DateTime(this._currentDate.Date.Ticks);
record.Time = this._currentDate.TimeOfDay;
record.MeasuringBeam = 1;
record.Direction = "P1AB";
record.Value = automaticGainControl;
this._agcAbsoluteDataRecordsToSaveBuf.Enqueue(record);

また、_agcAbsoluteDataRecordsToSaveBuf は空のままです (カウント == 0)。したがって、 ConcurrentQueue.Enqueue メソッドは値をコレクションに追加しません。AGC_DataRecordToSave レコードオブジェクトが作成され、データが正常に入力されます。デバッガで確認しています。コレクションに値が追加されないのはなぜですか? なぜこのような状況になったのですか?この問題を解決するのを手伝ってください。

4

1 に答える 1