在silverlight中检测异步函数调用完成

在silverlight中检测异步函数调用完成,silverlight,asynchronous,callback,Silverlight,Asynchronous,Callback,比方说,需要将客户对象从db加载到silverlight应用程序,以便在UI中显示客户详细信息。我们需要检测用户是否正在更改UI中的任何数据 我们正在侦听来自视图模型的属性更改通知。但是,当作为加载过程一部分的属性更改导致通知时,我们必须放弃它 class CustomerLoader { Helper helerobj; Address addressobj; Profile profileobj; void LoadFromDb() {

比方说,需要将客户对象从db加载到silverlight应用程序,以便在UI中显示客户详细信息。我们需要检测用户是否正在更改UI中的任何数据

我们正在侦听来自视图模型的属性更改通知。但是,当作为加载过程一部分的属性更改导致通知时,我们必须放弃它

 class CustomerLoader
    {
    Helper helerobj;
    Address addressobj;
    Profile profileobj;
    void LoadFromDb()
    {

    helperobj.Load();
    addressobj.Load();
    profileobj.Load();
//start listening after the loading finished
    this.propertychanged += new PropertyChangedEventHandler(handlepropertychanged);


    }
问题是内部对象可能正在调用异步函数,这可能会设置属性。因此,当我们开始侦听属性更改时,加载可能尚未完成

我们需要知道实际什么时候装货。到目前为止,我们要求开发内部对象类的开发人员接受参数中的回调,当函数完成时,他们应该调用该参数


还有其他方法吗?

您只需要一个真正经典的异步objet加载

因此,是的,唯一的解决方案是让负责加载的开发人员提出一个异步函数。现在您有了几种在Silverlight中实现异步的解决方案

您可以按原样提供回调,也可以使用async and Wait来管理异步任务,如下所述: