Dispatcher 타이머를 사용하여 UI를 업데이트하는 WPF C# 응용 프로그램이 있습니다.Dispatcher 타이머를 사용하여 WPF에서 스레드 잠금
스레드 A의 클래스 DataProcessor
에서 변수 'FinalMarkers'라는 맞춤 구조체를 업데이트하고 있습니다. 스레드 실행 안에 다음
static readonly Object mLock = new Object();
static List<Storage.FiducialMarkers> finalMarkers;
public List<Storage.FiducialMarkers> FinalMarkers
{
get { return finalMarkers; }
set
{
lock (mLock)
{
finalMarkers = value;
}
}
}
과 : DataProcessor
내 UI의 형태로
FinalMarkers = pullFiducialData();
를, 내가 전달하고 인스턴스에
나는 다음을 사용하여 변수 업데이 트를 고정하고 Form의 생성자.
protected DataProcessor Data = null;
public FormView(DataProcessor _Data)
{
Data = _Data;
}
내가 다음 변수를 호출하는 디스패처 타이머가 : 타이머 틱 기능에
DispatcherTimer timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(20);
timer.Tick += timer_Tick3d;
timer.Start();
을, 내가 값을 잡아 :
List<Storage.FiducialMarkers> tmpList = new List<Storage.FiducialMarkers>();
tmpList = Data._processingArgs.FinalMarkers;
이 잠시 동안 실행, 오류없이 충돌합니다. 스레드 잠금을 잘못 처리하고 있습니까?
다른 스레드의 데이터를 디스패처 타이머로 전달하는 올바른 방법입니까?
감사합니다.
나는 자물쇠와 관련 있다고 생각하지 않습니다. 구현 된대로 아무 것도 유용하지 않습니다. 어떤 예외가 발생했는지 파악하고 스택 추적 및 메시지를 포함해야합니다. – Evk