2010-07-02 139 views
5

我必须将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系统从正确的线程委托版本的集合?

回答