0

比如说,需要将客户对象从数据库加载到 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);


    }

这样做的问题是内部对象可能正在调用可能设置属性的异步函数。因此,当我们开始监听属性更改时,加载可能还没有完成。

我们需要知道加载实际完成的时间。到目前为止,我们要求正在开发内部对象类的开发人员接受参数中的回调,他们应该在函数完成时调用该回调。

还有其他方法吗?

4

1 回答 1

1

你只想要一个非常经典的异步对象加载。

所以是的,唯一的解决方案是要求开发人员在加载时提出一个异步函数。现在您有几个解决方案可以在 Silverlight 中实现异步。

您可以像这样做一样提供回调,也可以使用 async 和 await 来管理您的异步任务,如下所述:http: //10rem.net/blog/2012/05/22/using-async-and-await-in- silverlight-5-and-net-4-in-visual-studio-11-with-the-async-targeting-pack

于 2013-04-30T06:27:08.663 回答