Я определяю ConcurrentQueue как класс поле ViewModel в моем приложении WPF MVVM:Почему метод ConcurrentQueue.Enqueue не добавляет значения?
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 тик обработчик (в том же класс) я следующее:
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). Таким образом, метод ConcurrentQueue.Enqueue не добавляет значение в коллекцию. AGC_DataRecordToSave запись объект создан и заполнен данными успешно. Я проверяю его в отладчике. Почему значение не добавляется в коллекцию? Почему эта ситуация имеет место? Помогите решить эту проблему.
Кто снимает предметы в этой очереди? –
Метод в том же классе. Этот метод находится внутри параллельной задачи TPL. – Prohor