У меня есть небольшое приложение WPF, в котором я имитирую движение, которое обнаруживается датчиком. Мне кажется, что движение происходит через 1 минуту, а через 2 минуты останавливается. Ниже мой код:
public event Action OnMotionDetected;
public event Action OnMotionReset;
private DateTime startTime = DateTime.Now;
public MotionDetectionService()
{
startTime = DateTime.Now;
System.Threading.Thread mockThread = new System.Threading.Thread(new System.Threading.ThreadStart(StartMock));
mockThread.Start();
}
private void StartMock()
{
while (DateTime.Now < startTime.AddMinutes(1))
{
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Remaining: " + (startTime.AddMinutes(1) - DateTime.Now).ToString());
}
FireMoveEvent();
while (DateTime.Now < startTime.AddMinutes(2))
{
System.Threading.Thread.Sleep(1000);
Console.WriteLine("Remaining: " + (startTime.AddMinutes(2) - DateTime.Now).ToString());
}
FireMoveEvent();
}
private void FireMoveEvent()
{
if(OnMotionDetected != null)
{
OnMotionDetected();
}
}
private void FireResetEvent()
{
if (OnMotionReset != null)
{
OnMotionReset();
}
}
Когда поток запускает событие, которое обновляет мой пользовательский интерфейс, но он говорит, что не может обновить, потому что элементы пользовательского интерфейса были сгенерированы в другом потоке.
Есть идеи как решить?