我正在使用 agsXMPP 库开发基于 XMPP 的 Microsoft 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 方式,而且这些匿名方法很难维护。那么,在这种情况下,我怎样才能以更好的方式编码呢?对不起我的英语不好,我已经尽力说清楚了^_^谢谢!</p>