我正在開發需要使用異步方法。我知道我的程序不會暫停等待該方法的結果。但是我的程序必須讓該方法的結果繼續。那麼,如何才能暫停我的程序,直到我得到該方法的結果?否則,我需要同步一個包含異步方法的程序。如何暫停程序,直到我們得到異步方法的結果?
這是我的代碼:
private async void DiaChiGanNhat()
{
double kc;
Geolocator myGeolocator = new Geolocator();
Geoposition myGeoposition = await myGeolocator.GetGeopositionAsync();
Geocoordinate myGeocoordinate = myGeoposition.Coordinate;
GeoCoordinate myGeoCoordinate = ConvertGeocoordinate(myGeocoordinate);
IList<DiaChi> dc = dc_control.LocTheoTheLoai(TheLoai(txtTimKiem.Text));
for (int i = 0; i < dc.Count; i++)
{
kc = TinhKhoangCach(myGeoCoordinate.Longitude, myGeoCoordinate.Latitude, dc[i].KinhDo, dc[i].ViDo);
distance[i] = kc;
}
//sap xep tang dan ve khoang cach va ID
for (int i = 0; i < distance.Length; i++)
{
if (distance[i] > distance[i + 1])
{
double tg1 = distance[i];
distance[i] = distance[i + 1];
distance[i + 1] = tg1;
int tg2 = id[i];
id[i] = id[i + 1];
id[i + 1] = tg2;
}
}
}
private void bttTimKiem_Click(object sender, RoutedEventArgs e)
{
DiaChiGanNhat();
IList<DiaChi> addr1 = dc_control.LocTheoID(id[0]);
txtDiaChi1.Text = addr1[0].TenDiaChi;
IList<DiaChi> addr2 = dc_control.LocTheoID(id[1]);
txtDiaChi2.Text = addr2[0].TenDiaChi;
IList<DiaChi> addr3 = dc_control.LocTheoID(id[2]);
txtDiaChi3.Text = addr3[0].TenDiaChi;
}
這是我的問題。我必須暫停我的程序,直到DiaChiGanNhat()完成。 不要擔心方法名稱,因爲我是越南人。 LOL
非常感謝你對我的幫助!
你爲什麼要暫停程序以等待** **異步任務?你不妨做一個**同步**任務。 – JosephGarrone
當然,我不想使用異步方法。但是這種方法GetGeopositionAsync()是一種異步方法。^_^ –
你不應該像在Windows Phone平臺上那樣阻止UI線程。相反,設計您的用戶界面,以便在操作正在進行時顯示某些內容(「正在加載...」或其他內容),並在操作完成時將其轉換爲正常狀態。 –