2017-02-02 29 views
-2

Мне нужно выполнить два метода одновременно, только после завершения этой следующей вещи следует продолжить, проблема у меня есть пользовательский интерфейс, который выдает мне ошибку, если используется задача (ее WPF-приложение).Фоновый работник для wpf C#

Task Data= Task.Factory.StartNew(() => Readdetails()); 
Task Data2= Task.Factory.StartNew(() => ReadProcedure()); 

Data.Wait(); 
Data2.Wait(); 

, но я получаю ошибку (необходимо создать-dependencysource-на-же-нить-как-DependencyObject).

что-то вроде этого мне нужно.

private void ReadProcedure() 
     { 
      this.Pro = //some stuff; 
     } 

private void ReadProcedure2() 
     { 
      this.Pro2 = //some stuff; 
     } 

if(this.pro!=null && this.pro2!=null) 
{ 
//other things to carry out. 
} 

Я пробовал использовать Dispacter, но кажется, что он все еще не работает.

+0

Пожалуйста, взгляните на [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how-to-ask) –

ответ

0

Чтобы подождать несколько задач, вы можете указать Task.WaitAll.

Task.WaitAll(Data,Data2); 

Для обновления на пользовательском интерфейсе, вы можете использовать synchronizationcontext.

Task UITask= Task.Factory.StartNew(() => 
    { 
    if(this.pro!=null && this.pro2!=null) 
    { 
     //other things to carry out. 
    } 
    }, TaskScheduler.FromCurrentSynchronizationContext()); 

Вы можете комбинировать выше двух, используя TaskFactory.ContinueWhenAll.

+0

Не работает. – Usha

+0

Добавьте более подробную информацию по вашему вопросу, включая фрагмент кода для выполнения в пользовательском интерфейсе и фоновый поток. – Tilak

+0

Благодарим вас за модификацию. – Usha