私は非同期の方法を使用する必要があることを開発しています。私のプログラムは、そのメソッドの結果を待つために一時停止しないことを知っています。しかし、私のプログラムを続行するには、そのメソッドの結果が必要です。では、そのメソッドの結果が得られるまでプログラムを一時停止するにはどうすればよいですか?それ以外の場合は、非同期メソッドを含むプログラムを同期する必要があります。
これは私のコードです:
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()が終了するまで、プログラムを一時停止する必要があります。メソッド名は気にしないでください。私はベトナム人です。笑
助けてくれてありがとう!
を使用してこれを試すことができます。これはWait
、終了するまでそのメソッドをブロックします。
private void bttTimKiem_Click(object sender, RoutedEventArgs e)
{
var task = Task.Factory.StartNew(DiaChiGanNhat);
task.Wait();
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;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加