2015-08-14 2 views
2

Пусть у меня есть следующие:События, делегаты, обратный вызов, INotifyPropertyChanged

class a 
{ 
    List <SomeType> actions; 

    ForEachMethod() 
    { 
     foreach (action in actions) 
     { 
      OtherFucntion(action); 
     } 
    } 
} 

class b 
{ 
    public Bool WasDoSomeThingSuccesful; 

    OtherFunction (SomeType action) 
    { 
     WasDoSomeThingSuccesful = false; 
     DoSomeThing(); 
    } 
} 

Теперь то, что я хочу добиться: DoSomeThing() некоторые JS, который изменит значение WasDoSomethingSuccesfull к истине, но асинхронной , поэтому я не знаю, когда это будет.

Так что в основном я хочу посмотреть, установлено ли свойство true и когда оно истинно. Я могу продолжить с другим действием в действиях в ForEachMethod().

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

+0

Работа в ASP.NET, winform или WPF? –

+0

Используется WinForm –

+0

Вы хотите уведомить class 'a', когда команда' '' завершена? –

ответ

0

Используйте событие так же, как в примере приведены ниже для уведомления

public class A 
{ 
    ... 
    private void LaunchB() 
    { 
     var bObj = new B(); 
     bObj.OnTaskCompleted += TaskCompleted; 
     bObj.StartWorking(); //some method call here 
    } 
    private void TaskCompleted(string status) 
    { 
     //notification from B comes 
    } 
    ... 
} 

public class B 
{ 
    public delegate void TaskCompletedHandler(string status); 
    public event TaskCompletedHandler OnTaskCompleted; 
    private void DoWork() 
    { 
     if(completed) 
     { 
      ... 
      if (OnTaskCompleted != null) 
      { 
       OnTaskCompleted("SUCCESS"); 
      } 
     } 
    } 
}