我必須將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系統從正確的線程委託版本的集合?