WPF и перекрестные операции потока - PullRequest
1 голос
/ 31 января 2010

У меня есть небольшое приложение 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();
                }
            }

Когда поток запускает событие, которое обновляет мой пользовательский интерфейс, но он говорит, что не может обновить, потому что элементы пользовательского интерфейса были сгенерированы в другом потоке.

Есть идеи как решить?

1 Ответ

1 голос
/ 31 января 2010

Вы можете использовать Dispatcher.Invoke() для маршалинга в поток пользовательского интерфейса.

* 1003.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...