2010-07-02 140 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系統從正確的線程委託版本的集合?

回答