Если я правильно вас понимаю, вы хотите превратить синхронный вызов в DownloadFromAzure()
в ожидаемый вызов.
Существует несколько способов сделать это, включая изменение DownloadFromAzure()
в асинхронный метод.
Но если это не лучший подход (который может иметь место), вы можете просто обернуть его в Task
:
await Task.Run(() => DownloadFromAzure());
Обновление,из-за комментария:
partial void DownloadPressed(NSObject sender)
{
Console.WriteLine("Pressed");
DoDownloadAsync();
}
private async void DoDownloadAsync()
{
BeginInvokeOnMainThread(() => {
Label1.StringValue = "Fetching Data";
Label2.StringValue = "Fetching Data";
Label3.StringValue = "Fetching Data";
);
await Task.Run(() => DownloadFromAzure());
Label1.StringValue = "Phrases: " + psNet.Count;
Label2.StringValue = "CategorySource: " + csNet.Count;
Label3.StringValue = "CategoryGroupSource: " + cgsDb;
}
Обратите внимание, что это подход «забей и забудь», который может использоваться только в этой форме, если DoDownloadAsync()
делает надлежащую обработку ошибок под свою ответственность (чтоможет быть включено в DownloadFromAzure()
здесь), а вызывающий абонент (DownloadPressed
здесь) не заботится о отслеживании прогресса Task
!В любом другом случае DoDownloadAsync()
должен вернуть Task
, который он ожидает, для того, чтобы вызывающий мог отслеживать.
См., Например, здесь для более подробного обсуждения: async / await - когдавернуть задание против void?