我必须将WPF UI集成到.NET 2.0应用程序中。System.Windows.Forms.Application和System.Windows.Application之间的互操作性
的ObservableCollection需要在GUI线程调度进行修改,所以我想出了涉及InvokeLater()
ObservableCollection<Item> items;
public delegate void AddItemDelegate(Item i);
public void AddItem(Item item)
{
System.Windows.Application.Current.Dispatcher.BeginInvoke(
new AddItemsDelegate(i => items.Add(i), item);
}
然而,由于该项目最初是用.NET 2.0编写的解决方案,主线程使用System.Windows.Forms.Application
,所以System.Windows.Application.Current
为空。
我不能用System.Windows.Application
替换当前的System.Windows.Forms.Application
,因为我的应用程序很大程度上依赖于这个API,并且这两个类是非常不相容的。
有没有办法获得当前System.Windows.Application
?或者在我的System.Windows.Forms.Application
上拨打电话BeginInvoke()
?还是我认为写我自己的DIY系统从正确的线程委托版本的集合?