1

我正在使用 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) =>
        {
             ... 
        };
    };

我正在寻找一种优雅的方式来做到这一点。

4

1 回答 1

2

您所做的对于.Net 1.0 到 4.0 版本是完全正确的。这就是 .Net 世界中异步编程的工作方式。

.Net 4.5 有一个用于异步编程的新 async/await 机制,如下所示:

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

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

如上所述,如果您有 VS 2012 (VS 11),那么您可以下载一个包,该包允许您将 await async 与 Silverlight 5 一起使用。如果您不使用 VS 2012,那么您目前正在做的事情是完全正确的。

于 2012-10-23T08:21:40.167 回答