멀티 스레드를 처리 할 때 일반적으로 Presenter는 이벤트를 수신하고 View를 호출하여 해당 컨트롤을 업데이트합니다.멀티 스레드 이벤트, MVP, Winforms의 발표자에서보기 업데이트
발표자 :
private void EventAggregator_InfoUpdated(object sender, InfoUpdatedEventArgs e)
{
view.UpdateFeedInfo(e.FeedInfo);
}
보기 :
public void UpdateFeedInfo(FeedInfo feedInfo)
{
if (!control.IsHandleCreated && !control.IsDisposed) return;
control.BeginInvoke((MethodInvoker) (() => control.Update(feedInfo)));
}
내 질문은보기를 호출하기 전에 GUI 스레드에서 발표자의 메서드 호출을 호출하는 방법입니다. 뭔가 같은 :
private void EventAggregator_InfoUpdated(object sender, InfoUpdatedEventArgs e)
{
//InvokeInUiThread// ManageInfoInput(e.FeedInfo);
}
private void ManageInfoInput(FeedInfo feedInfo)
{
...
view.UpdateFeedInfo(e.FeedInfo);
}
'BeginInvoke' 대신 동기 호출 인'Invoke'를 호출하면됩니다. 그것은 당신의 질문에 대답합니까? –
Presenter는 여러 스레드에서 호출을 수신합니다. 발표자에게 이러한 입력을 관리하고 싶습니다. 나중에보기 업데이트를 호출합니다. Presenter는 UI 스레드에서 실행됩니다. –