【发布时间】:2017-03-14 14:36:18
【问题描述】:
在 Xamarin.Forms 应用程序中,我使用 GeoLocator 检索有关我的位置的信息。 该方法是异步的。我必须返回包含位置参数的对象,但我不能。
这是我的类 PositionPage 的构造函数
public PositionPage()
{
getCurrentPosition();
var map = new Map(
MapSpan.FromCenterAndRadius(
new Position(45.987487, 9.366337), Distance.FromMiles(0.3)))
{
IsShowingUser = true,
HeightRequest = 100,
WidthRequest = 960,
VerticalOptions = LayoutOptions.FillAndExpand
};
var stack = new StackLayout { Spacing = 0 };
stack.Children.Add(map);
Content = stack;
}
这是 async 方法(现在是 void 方法):
public async void getCurrentPosition()
{
try
{
var locator = CrossGeolocator.Current;
locator.DesiredAccuracy = 50;
var position = await locator.GetPositionAsync(timeoutMilliseconds: 10000);
Debug.WriteLine("Position Status: {0}", position.Timestamp);
Debug.WriteLine("Position Latitude: {0}", position.Latitude);
Debug.WriteLine("Position Longitude: {0}", position.Longitude);
}
catch (Exception ex)
{
Debug.WriteLine("Unable to get location, may need to increase timeout: " + ex);
}
}
我需要在调用 getCurrentPosition() 时返回一个位置对象以将它传递到 MapSpan 中。
我该怎么做?
【问题讨论】:
-
你不应该从构造函数调用异步方法,我强烈建议你重新考虑你的代码设计。
标签: c# asynchronous xamarin xamarin.forms async-await