我想在加載主頁時啓動一個任務,這會在後臺使用Xamarin.Mobile獲取我的位置。難點在於等待,如果這個任務沒有完成,當用戶點擊一個按鈕時。在Windows Phone中運行異步任務並稍後等待
在Xamarin的iOS,我設法做到這一點,但是當我試圖做同樣在Windows Phone 8.0,我得到一個AggregateException與作爲消息:「一個或多個錯誤發生。」
還有就是我使用的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using System.Diagnostics;
using System.IO;
using Microsoft.Phone.Scheduler;
using System.Threading;
using System.Threading.Tasks;
using System.ComponentModel;
using Xamarin.Geolocation;
namespace Application.WinPhone
{
public partial class Connexion : PhoneApplicationPage
{
static Task w;
// Constructor
public Connexion()
{
InitializeComponent();
w = new Task (() =>
{
Debug.WriteLine("Start");
Geolocator geolocator = null;
geolocator = new Geolocator() { DesiredAccuracy = 50};
var t = geolocator.GetPositionAsync(8000).ContinueWith(x =>
{
Debug.WriteLine(string.Format("Latitude : {0} Longitude : {1}", x.Result.Latitude, x.Result.Longitude)); //Visual Studio's debugger indicate this line with the exception
});
t.Wait();
Debug.WriteLine("Finished");
});
w.Start();
}
private void Connexion_Click(object sender, RoutedEventArgs e)
{
w.Wait();
//Here use the position find by the task to know on which page send the user
NavigationService.Navigate(new Uri("/Inscription.xaml", UriKind.RelativeOrAbsolute));
}
}
}
如果在我的崗位對不起一些語法錯誤,我是法國人。 :)
在此先感謝您的幫助。
檢查AggregateException的'InnerException'屬性以瞭解發生了什麼 – 2014-10-01 12:26:58
InnerException的消息說:「任務被取消」。 爲什麼這個任務會被取消? – Nunshakin 2014-10-01 13:02:05
你正在構造函數中完成這個任務,那叫什麼?也許它耗時太長,有什麼東西在殺死它? – valdetero 2014-10-01 14:18:12