C# 战胜异步泥潭
我正在尝试执行RouteQuery,但它只允许异步调用。不幸的是,当返回被命中时,它还没有完成QueryAsync() 有没有一个标准的方法来解决这个问题 通常我只会启动一个定时器,等待一个属性填充,但这是通往贫民窟的路。必须有一个解决办法C# 战胜异步泥潭,c#,asynchronous,C#,Asynchronous,我正在尝试执行RouteQuery,但它只允许异步调用。不幸的是,当返回被命中时,它还没有完成QueryAsync() 有没有一个标准的方法来解决这个问题 通常我只会启动一个定时器,等待一个属性填充,但这是通往贫民窟的路。必须有一个解决办法 private bool wayPointHit(GeoCoordinate geo) { RouteQuery query = new RouteQuery(); List<GeoCoordinate> coords = new
private bool wayPointHit(GeoCoordinate geo)
{
RouteQuery query = new RouteQuery();
List<GeoCoordinate> coords = new List<GeoCoordinate>();
coords.Add(new GeoCoordinate(curLocation.Latitude, curLocation.Longitude));
coords.Add(geo);
query.Waypoints = coords;
bool hit = false;
query.QueryCompleted += (sender, args) =>
{
var rt = args.Result;
if (rt.LengthInMeters <= 20)
{
hit = true;
}
};
query.QueryAsync();
return hit;
}
专用布尔航路点命中(地理坐标)
{
RouteQuery=新建RouteQuery();
列表坐标=新列表();
添加(新地理坐标(curLocation.lation,curLocation.Longitude));
添加(地理位置);
query.Waypoints=坐标;
bool-hit=false;
query.QueryCompleted+=(发件人,参数)=>
{
var rt=args.Result;
如果(rt.LengthInMeters),异步的整个思想不是等待操作完成(即同步)但要启动查询,并返回到其他内容。查询结果应通过回调代码处理。@MarcinJuraszek如果我可以同步,请相信我,我会的。但是Windows Phone一直都是异步的。是的,因为同步会使UI冻结,所以不建议这样做。如果平台是异步的,您必须进行编程也以异步方式。不要试图使代码像同步一样,因为系统不允许这样。好吧,我明白你的意思,这很好。但你并没有真正提供解决这个问题的方法。我知道我需要坚持异步解决方案。我有。这就是为什么我有这个问题。我不会给你解决方案,bec因为这里可能没有解决方案。这可能是一个问题,您可能试图修复错误的问题(可能您需要更改设计,而不是方法)。顺便问一句,是WP8还是WP7.5?