내 WPF MVVM 응용 프로그램의 뷰 모델 클래스 필드로 ConcurrentQueue을 정의 : 다음ConcurrentQueue.Enqueue 메소드가 값을 추가하지 않는 이유는 무엇입니까?
/// <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에서 핸들러을 선택합니다 (같은에서 : 아래
private ConcurrentQueue<AGC_DataRecordToSave> _agcAbsoluteDataRecordsToSaveBuf = new ConcurrentQueue<AGC_DataRecordToSave>();
는 AGC_DataRecordToSave 정의입니다 클래스) 나는 다음을 수행는 :
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