2016-10-05 2 views
0

Я определяю 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 запись объект создан и заполнен данными успешно. Я проверяю его в отладчике. Почему значение не добавляется в коллекцию? Почему эта ситуация имеет место? Помогите решить эту проблему.

+0

Кто снимает предметы в этой очереди? –

+0

Метод в том же классе. Этот метод находится внутри параллельной задачи TPL. – Prohor

ответ

1

Я спросил OP: Кто снимает предметы в этой очереди?, и OP ответил: Метод в том же классе. Этот метод находится внутри параллельной задачи TPL..

Так что, пока вы проверяете счет очереди, некоторые из параллельных задач уже выбрали очередь в очереди!

+0

Да, действительно. Добавление в коллекцию работает правильно. Спасибо. – Prohor

+0

@Prohor Нет проблем;) –

Смежные вопросы