2017-02-21 7 views
0

wpf 프로젝트에서 winforms 프로젝트로 메소드를 이동했습니다.WinForm의 Dispatcher

Dispatcher를 통해 winforms로 변환하는 방법을 모른다.

아무도 도와 줄 수 있습니까?

void gm_MoveDownByThread() 
{ 
    this.Dispatcher.Invoke((Action)(() => 
    { 
     KeyDownMethod(Key.Down); 
    })); 
} 
+1

[Control.Invoke] (https://msdn.microsoft.com/en-us/library/zyzhdc6b(v=vs.110) .aspx)를 살펴보십시오. – Clemens

+0

도 참조하십시오. https://stackoverflow.com/questions/13292628/dispatching-events-into-right-thread, https://stackoverflow.com/questions/18134822/how-do-i-convert-wpf-dispatcher-to-winforms, 기타 –

답변

-1

는 UI 스레드에서 실행중인 경우, 다음 방법은 가장 일반적인 하나가 될 것이며, WPF와 윈폼에서 모두 작동합니다

SynchronizationContext.Current.Send(_ => 
      { 
       //anything you wish. 
      }, null); 

윈폼 디스패처 모두와 WPF 발송자는 요청 된 작업을 UI 스레드 대기열에 대기열에 포함시키는 SynchronizationContext 구현입니다. 이 방법을 사용하면 특정한 것을 사용하지 않습니다.

UI 스레드 외부에서 코드를 실행하는 경우 SynchronizationContext.Current는 사용자가 찾고자하는 것이 아닌 "기본"구현을 참조합니다 (UI 내에서 동작을 실행하지 않음) 스레드,하지만 그냥 ThreadPool에서). 따라서 UI 컨트롤에 대한 참조가있는 경우 Control 클래스에서 상속되는 모든 항목의 BeginInvoke 메서드를 사용할 수 있습니다.

희망이 도움이됩니다.