2013-04-29 3 views
0

이 작업을 수행하는 WPF 응용 프로그램을 만들고 싶습니다. 응용 프로그램에 8 개의 작업이 함께 실행됩니다. 각 작업은 기본 창에 표시된 텍스트 상자에 일부 문자열을 광고 할 수 있습니다.일부 작업이 내 WPF 컨트롤을 변경하는 방법

어떻게 모든 작업을 동시에 실행하고 기본 UI 스레드에서 실행합니까?

(30/04/13 :

다음 코드를 참조하십시오

private void RunTasks(int ThreadsNumber) 
    {   

     int Ratio = NumbersToCheck/ThreadsNumber; 

     for (int i = 0; i < ThreadsNumber; i++) 
     { 
      Task.Run(() => 
       { 
        int counter = 0; 
        int low = Ratio * i; 
        int high = Ratio * (i + 1); 

        Dispatcher.Invoke(DispatcherPriority.Normal, 
             (Action)(() => 
             { 
              for (int j = low; j < high; j++) 
              { 
               if(IsPrime(j)) 
                MessageList.Items.Add(j); 

              } 
             })); 
       });     
     } 

    } 

MessageList의이 목록 상자입니다. 어떻게이 코드를 실행하면 id는이 목록 상자에 추가 된 가장 작은 소수를 보지 못하나요? (3,5,7,11 등).

답변

2

사용 디스패처은 비동기 하나를 실행 UI 스레드에서 코드를 호출하기 : 당신의 도움에 대한

// The Work to perform on another thread 
Task.Run(()=> 
{ 
    // long running operation... 


    // Sets the Text on a Text Control from the Dispatcher 
    // so it will access the UI from the UI-Thread 
    Dispatcher.Invoke(DispatcherPriority.Normal, 
        (Action)(() => { myText.Text = "From other thread!"; })); 
}); 
+0

감사합니다. 작업에서는 어떻게해야합니까? –

+0

Task.Run()을 사용하여 예제 코드를 업데이트했습니다. – IsNull

+0

내 새로운 질문을 참조하십시오, 일부 코드를 썼습니다. 그러나 그것은 행동하기를 원하는 것처럼 행동하지 않습니다. –