假设我有以下内容:
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,但它是async,所以我不知道它什么时候会。
所以基本上我想看如果属性设置为真,当它为真,我可以继续在ForEachMethod()
的行动中的另一个动作。
即使我理解委托和事件的概念,我也不知道在这种情况下,当它们结合在一起时如何处理。
像下面的例子一样使用事件作为通知
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");
}
}
}
}