TargetInvocationException при обновлении изображения в WPF - PullRequest
3 голосов
/ 23 января 2010

Я создал WPF Control, который отображает изображение. Теперь я хотел бы изменить это изображение с очень высокой скоростью. Я создал класс ImageContainer, который содержит изображение и имеет ChangedEventHandler, который обновляет изображение в моем элементе управления при изменении.

Код, который выполняется, выглядит следующим образом:

videoImageThread = new Thread(
            new ThreadStart(
              delegate()
              {
                  this.VideoCapture.Dispatcher.Invoke(
                    System.Windows.Threading.DispatcherPriority.Normal,
                    new Action(
                      delegate()
                      {

                          videoImage.Source = VideoImageContainer.Instance.VideoBitmapSourceImage;

                      }
                  ));
              }
          ));


private void Instance_VideoRefresh()
    {
        if (VideoImageContainer.Instance.VideoImage != null)
        {
            lock (videoImageSetLock)
            {
                videoImageThread.Start();
            }
        }
    }

Этот код вызывает исключение System.Reflection.TargetInvocationException, что я делаю не так?

Ответы [ 2 ]

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

мне кажется, что вы вызываете поток, чтобы вызвать поток?!

Вы пытались вызвать действие для диспетчера напрямую, например:

private void Instance_VideoRefresh()
{
    if (VideoImageContainer.Instance.VideoImage != null)
        this.VideoCapture.Dispatcher.Invoke(
                System.Windows.Threading.DispatcherPriority.Normal,
                new Action(
                  delegate()
                  {
                      videoImage.Source = VideoImageContainer.Instance.VideoBitmapSourceImage;
                  }
              ));
}
0 голосов
/ 24 января 2010

Вы пытались просто привязать videoImage.Source к свойству и изменить это свойство в своем методе Instance_VideoRefresh?

Я пробовал это раньше с комбинацией Image / List / Timer, и она работает довольно хорошо.

...