我正在使用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) =>
{
...
};
};
我正在寻找一种优雅的方法来做到这一点。
答案 0 :(得分:2)
你正在做的是.Net版本1.0到4.0完全正确。这就是异步编程在.Net世界中的运作方式。
使用.Net 4.5,有一个新的async / await mechansim用于异步编程,如下所示:
public async Data GetData()
{
return await _myService.GetDataAsync();
}
编译代码时,它会被分解为一系列异步方法,但开发人员编写的代码会大大简化。
如上所述,如果您有VS 2012(VS 11),那么您可以下载一个允许您使用Silverlight 5等待异步的包。如果您没有使用VS 2012,那么您目前所做的就是右。