我正在使用C#创建Silverlight 4应用程序。
我正在尝试执行以下操作:
MapNode endNode = null;
if (keyword != null && keyword != "")
{
EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);
var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
{
foreach (var item in items.Entities)
{
MapNode n = mapHelp.getNodeByID(item.NodeID);
if (n != null)
{
endNode = n;
TrackAnimation();
}
}
}, true);
}
然而,在此之后,我的变量endNode仍为null。 TrackAnimation()就像endNode有一个有效值一样,但在Load语句之外,endNode又回到了null。
我知道我对如何运作缺乏了解,我非常感谢给予的帮助。
我想要做的是查询我的数据库,我想在其他方法中使用这些结果,而不是在数据网格中显示它们。
我希望endNode具有可以在其他方法中使用的值。
请帮我弄清楚这样做的方法,谢谢!
编辑:
谢谢你,SLaks
我可以这样做:
MapNode endNode = null;
if (keyword != null && keyword != "")
{
EntityQuery<NodeIDProj> res = CampusQueries.getNodeIDByNameQuery(keyword);
var queryres = CampusQueries.Load<NodeIDProj>(res, (items) =>
{
foreach (var item in items.Entities)
{
MapNode n = mapHelp.getNodeByID(item.NodeID);
if (n != null)
{
endNode = n;
TrackAnimation();
}
}
}, true);
}
queryres.Completed += new EventHandler(queryres_Completed);
void queryres_Completed(object sender, EventArgs e)
{
//stuff
}
如果是这样,我怎样才能访问endNode变量,因为它是在另一个方法中声明的?
答案 0 :(得分:1)
您的Load
方法可能是异步的,这意味着回调会在其余代码运行后的某个时间发生。
您只能在实际收到结果后使用该结果。