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

时间:2013-04-26 16:56:07

标签: silverlight asynchronous callback

比如说,需要将客户对象从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);


    }

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

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

还有其他办法吗?

1 个答案:

答案 0 :(得分: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