我需要其他代碼行等待getUserLocal完成它的工作並返回它們運行的值,主要是InitializeComponent();。 我用等待,但它似乎不工作,當這些部件被初始化,我已經沒有了getUserLocal結果尚未...初始化不等待異步方法(xamarin.forms)
這是我的看法的構造
public ComoChegarView(double lat, double longi)
{
userLocal = new Localizacao();
getUserLocal();
Localizacao lojaLocal = new Localizacao();
lojaLocal.latitude = lat;
lojaLocal.longitude = longi;
InitializeComponent();
}
這是異步任務
async Task getUserLocal()
{
userLocal = await Geolocator.GetUserLocationAsync();
}
是否有人知道我該怎麼做呢?
請參閱[異步OOP 2:構造函數](https://blog.stephencleary.com/2013/01/async-oop-2-constructors.html)。 – Romoku
請參閱此處的討論,在csharp中正在積極討論異步構造函數。 github.com/dotnet/csharplang/issues/419。 – Shawn
那麼,如果你想保持這種設計,你可能會嘗試'Task.Run(async()=> await getUserLocal())。等待();'你的構造函數會阻止async'方法在異步等待其中一個來自池中的線程。這不是最好的舉措,但它會工作,如果'GetUserLocationAsync'不需要UI上下文工作。 –