为什么ConcurrentQueue.Enqueue方法未添加值

本文关键字:添加 方法 ConcurrentQueue Enqueue 为什么 | 更新日期: 2023-09-27 18:11:38

我将ConcurrentQueue定义为WPF MVVM应用程序中的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 handler(在同一个类中)我做以下操作:

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保持空(Count == 0)。方法不会将值添加到集合中。AGC_DataRecordToSave记录对象已成功创建并填充数据。我在调试器中检查它。为什么不将价值添加到收藏中?请问为什么会出现这种情况?请帮忙解决这个问题

为什么ConcurrentQueue.Enqueue方法未添加值

我问OP: 谁在这个队列上取队列?, OP回答:方法在同一类中。.

因此,在您检查队列计数的时候,一些并行任务已经将队列项从队列中取出!