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