私はWPF MVVMアプリケーションでのViewModelクラスのフィールドとしてConcurrentQueueを定義します。なぜ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が(== 0をカウント)空のまま。したがって、ConcurrentQueue.Enqueueメソッドは値をコレクションに追加しません。 AGC_DataRecordToSaveレコードオブジェクトが作成され、データで正常に埋められます。私はデバッガでチェックします。なぜ値がコレクションに追加されないのですか?なぜこのような状況が起こりますか?この問題を解決するのを手伝ってください。
このキューのアイテムをデキューするのは誰ですか? –
同じクラスのメソッド。このメソッドは、内部の並列TPLタスクです。 – Prohor