I'll modify Wiktor idea for using View to invoke presenter code in UI thread.
View interface:
public interface IView
{
IAsyncResult BeginInvoke(Delegate method);
object Invoke(Delegate method);
}
Presenter:
private void EventAggregator_InfoUpdated(object sender, InfoUpdatedEventArgs e)
{
view.Invoke(new Action(() => ManageInfoInput(e.FeedInfo)));
}
private void ManageInfoInput(FeedInfo feedInfo)
{
...
view.UpdateFeedInfo(feedInfo);
}
In that way we don't put any code in View.