是进行多个回调以从Silverlight中获取数据的好习惯



我正在使用SL 5.0和EntityFramework。我需要从两个实体中获取数据,但我不喜欢通过回调的方式。

var context = ...
context.Load(context.GetTestTemplatesSummaryQuery("OPA-3DKCL2")).Completed += (s, e) =>
    {
        var result = context.GetTestTemplatesSummary_Results;
        var result2 = ...
        context.Load(context.GetTestTemplatesSummaryQuery(result)).Completed += (s2, e2) =>
        {
             ... 
        };
    };

我正在寻找一种优雅的方法。

您正在做的事情完全适合.NET版本1.0至4.0。这就是异步编程在.net世界中的工作。

使用.NET 4.5有一个新的异步/等待异步编程的Mechansim,看起来像这样:

public async Data GetData()
{
    return await _myService.GetDataAsync();
}

当您编译代码时,它将被分解为一系列异步方法,但是开发人员编写的代码已大大简化。

如上所述,如果您拥有VS 2012(vs 11),则可以下载一个允许您使用Silverlight等待异步的包装。如果您不使用VS 2012对。

最新更新