方法不返回控制
本文关键字:控制 返回 方法 | 更新日期: 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