方法不返回控制

时间:2011-10-06 21:37:39

标签: c# wpf

我在WPF表单上有一个网格,另一个类有一些事件。从我的wpf表单我订阅这些事件,我希望他们添加一些对象到我的网格,但只有我有“调用线程无法访问此对象,因为一个不同的线程拥有它。”如何避免这个问题并获得相同的功能?

2 个答案:

答案 0 :(得分:1)

这已经在StackOverflow和其他地方令人作呕。您需要使用Dispatcher将您的访问权限封送回UI线程。例如:

private void OnSomeEvent(object sender, EventArgs e)
{
    // this is being called on a thread other than the UI thread so marshal back to the UI thread
    Dispatcher.BeginInvoke((ThreadStart)delegate
    {
        // now the grid can be accessed
        grid.Whatever = foo;
    });
}

答案 1 :(得分:-1)

这是一个跨线程问题。查看委托创建,以便您可以安全地调用另一个线程来修改在不同线程上创建的内容。这是一篇关于如何进行这些线程安全调用的MSDN文章。

http://msdn.microsoft.com/en-us/library/ms171728(v=vs.80).aspx