Вам необходимо сделать возвращаемый тип метода Task
вместо void
.
Всегда следует избегать методов async void
. См. Microsoft Async / Await - Best Practices
Измените свой код следующим образом:
public async Task SetLeafLanguage() // here is the function I would like to wait before display the MainPage
{
var phoneLanguage = "fr";// CultureInfo.CurrentUICulture.TwoLetterISOLanguageName;
// transversal
var WarningConnexionText = await MicosoftTranslater.TranslateText("this the first text", phoneLanguage);
// Test page
var NumberOfWords = await MicosoftTranslater.TranslateText("this the second text", phoneLanguage);
var ExerciceTitle = await MicosoftTranslater.TranslateText("this the second text", phoneLanguage);
var AnswerPlaceHolder = await MicosoftTranslater.TranslateText("this the second text", phoneLanguage);
var LabelNumberOfWordToTranslate = await MicosoftTranslater.TranslateText("this the second text", phoneLanguage);
// parameter labels
var AboutUstext = await MicosoftTranslater.TranslateText("this the second text", phoneLanguage);
}
public async Task GetUserOnData()
{
await SetLeafLanguage();
MainPage = new MainPage();
}
public App ()
{
InitializeComponent();
GetUserOnData();
}
Разница в том, что теперь оба метода SetLeafLanguage
и GetUserOnData
относятся к типу async Task
. Это означает, что вы можете просто await
метод SetLeafLanguage. Когда вы await
это делаете, это означает, что вы будете ждать, пока метод что-то вернет, и тогда вы можете быть уверены, что обработка завершена.
Подробнее о типах возврата asyn c можно прочитать здесь - Асинхронный c Типы возврата (C#)