我正在開發基於XMPP的使用agsXMPP庫的微軟WPF即時消息應用程序。在agsXMPP中有很多事件,比如OnXmppConnectionStateChanged,OnLogin,OnPresence等,另一方面,由於WPF線程模式,我必須通過UI的Dispatcher.Invoke()方法處理事件,它看起來像這樣:如何以更多的方式設計這些代碼?
void handleRosterItem(object sender, agsXMPP.protocol.iq.roster.RosterItem item)
{
STP_FriendsHolder.Dispatcher.BeginInvoke(new Action(delegate
{
RosterItemControl rosterItem = new RosterItemControl();
rosterItem.RosterItemName = item.Jid.User;
rosterItem.Margin = new Thickness(0);
STP_FriendsHolder.Children.Add(rosterItem);
}));
}
我用匿名方式在幾乎所有的BeginInvoke/Invoke方法,因爲我不想到處創造太多的命名方法(我認爲這是不那麼「乾淨」)。但是我擔心這不是OOP的方式,而且這些匿名方法很難維護。那麼,如何在這種情況下以更好的方式編碼? 我爲我的英語不好對不起,我已經盡我所能說清楚^ _^ 感謝!
令人驚訝的是,你已經回答了我真正想問的問題。現在我的代碼處於混亂狀態,並且沒有設計,匿名事件處理我隨處可見。你給我一個很好的建議,謝謝Slugart。 – yman
@yman很高興聽到我的幫助,隨時將其標記爲答案;) – Slugart