0
ピンをマップに追加しようとすると、アプリケーションが停止します。次のコードを実行し続けることはありません。これは私がDoWorkを待っているときにのみ発生します。しかし、呼び出しを待つことは、アプリケーションを停止しません。Xamarin.Formsマップが非同期で待たされるのを待つ
停止すると、アプリケーションがクラッシュすることはなく、次のコード行は実行されませんが、まだアプリケーションと対話できます。
何かが見つからないか、非同期を間違って使用していますか?
Map myMap;
public MyViewModel(Map map)
{
myMap = map;
// Causes crash
Task.Run(async() =>
{
await DoWork();
});
// Causes no crashes
//DoWork();
}
async Task<bool> DoWork()
{
var success = false;
Task<bool> task = null;
task = SomeTask();
if (await task)
{
var pin = MyPin();
myMap.Pins.Add(pin);
// This is never called when calling await Dowork(). Application stops.
myMap.MoveToRegion(MapSpan.FromCenterAndRadius(MyPosition(), Distance.FromMiles(5)));
success = true;
}
return success;
}
public Pin MyPin()
{
var pin = new Pin();
pin.Type = PinType.Place;
pin.Position = new Position(<latitude>, <longitude>);
return pin;
}
私はそれを逃したとは思わない! – MartDavious