C# 事件、委托、回调、INotifyPropertyChanged
假设我有以下几点:C# 事件、委托、回调、INotifyPropertyChanged,c#,events,callback,delegates,inotifypropertychanged,C#,Events,Callback,Delegates,Inotifypropertychanged,假设我有以下几点: class a { List <SomeType> actions; ForEachMethod() { foreach (action in actions) { OtherFucntion(action); } } } class b { public Bool WasDoSomeThingSuccesful; OtherFun
class a
{
List <SomeType> actions;
ForEachMethod()
{
foreach (action in actions)
{
OtherFucntion(action);
}
}
}
class b
{
public Bool WasDoSomeThingSuccesful;
OtherFunction (SomeType action)
{
WasDoSomeThingSuccesful = false;
DoSomeThing();
}
}
a类
{
列出行动;
ForEachMethod()
{
foreach(动作中的动作)
{
其他功能(作用);
}
}
}
b类
{
公共事业是成功的;
OtherFunction(SomeType动作)
{
wasdosomethingsuccessful=false;
DoSomeThing();
}
}
现在我想实现的是:DoSomeThing()
是一些JS,它将把wasdosomethingsuccessfull
的值更改为true,但它是异步的,所以我不知道什么时候会发生
因此,基本上我希望观察属性是否设置为true,当它为true时,我可以在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");
}
}
}
}
在ASP.NET、winform或WPF中工作?当class
b
工作完成时,你想通知classa
吗?没错,但是如果有其他方法来处理这个问题,我对一切都持开放态度,fe如果这可以通过添加一些新类或编辑方法来完成,我不介意。我的问题是JS更改了async属性,因此我无法执行if(wasdosomethingsuccessful){otherfunction()}之类的操作。现在我只使用Thread.Sleep(value),但它是无效的,如果操作更复杂,它可能会导致Sleep值不够。但是这两个类之间没有链接a
不调用b
反之亦然?我们可以向启动类b