使用.NET 3.5多线程WPF应用程序:调度程序调用。更有效的方法?
嗨,大家好,我正在做一个项目一个WPF应用程序,我只是在寻找有关调度和多线程的一些真知灼见。我的程序的一个例子:
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
() =>_aCollection.Add(new Model(aList[i], aSize[i]))));
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
() => _Data.Add(new DataPoint<double, double>(Id, aList[i]))));
Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(
() => _historical[0].Add(aList[i])));
我知道WPF不喜欢另一个线程访问除创建它之外的其他线程。但是,我认为必须有更好的方式比调用这么多的调度程序更好,至少有人能让我朝正确的方向发展(如果有更好的解决方案的话)。
干杯, 斯帕克
我喜欢这个主意!谢谢。我有两个线程在一个类中运行:1为数据库获取数据,另一个用于发布RaisePropertyChanged以更新UI。我明白这可能不是最好的做事方式,说实话,我不是WPF的专家,所以UI线程和backgroundWorkers这个想法对我来说有点外国, – Sparky 2011-03-28 20:09:16
不,这是非常多的WPF中的事情是如何完成的,所以我会说你的方法很好。我会同意做UI的工作可能会很痛苦,但我猜想是一个必要的罪恶。编码大猩猩在延续上面也提供了一个很好的观点,但那些可以进入超级领域,因此建议。祝你好运! – 2011-03-28 20:51:01
我不认为这是“在WPF中完成的事情”。数据绑定应该自动进行调度。特别是如果他使用MVVM。看到我更新的答案。 – Euphoric 2011-03-29 09:30:49