WPF Как остановить анимацию из потока в фоновом работнике - PullRequest
1 голос
/ 22 марта 2010

У меня есть задача, которая занимает много времени. Я делаю это с фоновым рабочим потоком и перед его запуском, поскольку Do_Work запускает анимацию над меткой, а когда задача завершается, я останавливаю ее в RunWorkerCompleted, но получаю сообщение об ошибке, поскольку пытаюсь запустить / остановить анимацию в фоновом потоке не является владельцем Как я могу это сделать, я имею в виду запустить / остановить анимацию в фоновом режиме?

спасибо!

Ответы [ 3 ]

1 голос
/ 22 марта 2010

Вы должны запустить анимацию перед началом BackgroundWorker, а не в событии DoWork. Таким образом, вы сможете остановить его из события RunWorkerCompleted.

0 голосов
/ 22 марта 2010

Вы также можете вызвать анимацию остановки в потоке пользовательского интерфейса, используя что-то вроде следующего:

private void OnRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    /* If not operating on the main UI thread, call this method again on the App dispatcher's thread */
    if (App.Current != null && App.Current.Dispatcher.Thread != Thread.CurrentThread)
    {
        App.Current.Dispatcher.Invoke(new RunWorkerCompletedEventHandler(OnRunWorkerCompleted), new object[] { sender, e});
        return;
    }

    // Do stuff to the UI here
}
0 голосов
/ 22 марта 2010

Вам необходимо использовать метод Dispatcher.BeginInvoke для элемента управления, выполняющего анимацию.

...