比如说,需要将客户对象从数据库加载到 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);
}
这样做的问题是内部对象可能正在调用可能设置属性的异步函数。因此,当我们开始监听属性更改时,加载可能还没有完成。
我们需要知道加载实际完成的时间。到目前为止,我们要求正在开发内部对象类的开发人员接受参数中的回调,他们应该在函数完成时调用该回调。
还有其他方法吗?