方法不返回控制

本文关键字:控制 返回 方法 | 更新日期: 2023-09-27 18:10:42

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

方法不返回控制

这已经在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;
    });
}

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

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