尽管使用了Dispatcher.Invoke,但“调用线程......”异常

时间:2014-05-10 11:22:24

标签: c# wpf canvas

我正在开发一个WPF应用程序。没有详细说明:

myCanvas.Background = new SolidColorBrush(FILL);
myCanvas.Background = new SolidColorBrush(FILL);

会导致:

The calling thread cannot access this object because a different thread owns it.

如此明显的解决方法是:

this.Dispatcher.Invoke((Action)(() =>
{
    myCanvas.Background = new SolidColorBrush(FILL);
    myCanvas.Background = new SolidColorBrush(FILL);
}));

但是,这仍然会引发异常:

this.Dispatcher.Invoke((Action)(() =>
{
    myCanvas.Children.Add(eventArgs.getImage());
}));

任何想法为什么?

编辑:我将完整项目提交到:https://riouxsvn.com/svn/kinectfileexplo

请限制评论代码质量= thx;)

在第54行的MainWindow.xaml.cs中发生异常。

1 个答案:

答案 0 :(得分:0)

查看DispatcherPriority Enum是否可以提供帮助

Dispatcher.BeginInvoke((Action)(() =>
        {
            myCanvas.Children.Add(eventArgs.getImage());
        }), System.Windows.Threading.DispatcherPriority.Background);