2012-09-20 11 views
1

내가 메시지 박스 표시 "안녕하세요"를 참조하지 왜 메시지 상자가 표시되지 않습니까?

static void Main() 
    { 
     Form f = new Form(); 
     f.Show(); 
     Action a =() => MessageBox.Show("hi");    
     Task.Factory.FromAsync(f.BeginInvoke(a), (ar) => a.EndInvoke(ar)); 
     Console.Read(); 
    } 
  • 을 감안할 때.
  • 두 번째로, Task.Factory Async를 사용할 때 EndInvoke (ar)으로 전화해야합니다.

답변

5

UI 스레드가 아닌 스레드에서 MessageBox를 호출하면 절대로 표시되지 않습니다.

이 문제를 해결하는 올바른 방법은 다른 스레드에서 호출중인 메서드에서 이벤트를 발생시키고 UI 스레드가 해당 스레드를 구독하도록하는 것입니다. 이벤트 핸들러에서 MessageBox를 표시하는 코드를 작성할 수 있습니다.

+0

Task.Factory.FromAsync를 사용할 때 여전히 'EndInvoke'를 호출해야합니까? –

관련 문제