Xamarin Безопасный способ вызова асин c задачи - PullRequest
0 голосов
/ 03 февраля 2020

У меня есть один раздел, где я хочу подождать, чтобы убедиться, что эта задача выполнена. Я добавил task.wait, но кажется, что ожидание в задании не завершено.

Это приводит меня в тупик? Есть ли лучший способ сделать это?

Task task = Task.Run(() => DataSynchronize.SyncLinks());
task.Wait();
if (task.Status == TaskStatus.RanToCompletion)
{
Preferences.Set("IsUpdate", "True");
}

Модель

public static async Task<Status> SyncLinks()

Все другие разделы использовать этот

await DataSynchronize.SyncLinks();

1 Ответ

2 голосов
/ 03 февраля 2020

Слишком долго для комментария, поэтому добавив сюда

, дождитесь задания и проверьте его статус

Task<Status> task = DataSynchronize.SyncLinks();
await task;
if (task.Status == TaskStatus.RanToCompletion) {
    Preferences.Set("IsUpdate", "True");
}

Или еще лучше

просто дождитесь звонка

Status status = await DataSynchronize.SyncLinks();
if(...some condition based on status)
    Preferences.Set("IsUpdate", "True");

В общем, старайтесь не смешивать блокирующие вызовы, такие как .Result или .Wait(), которые потенциально могут вызвать взаимоблокировку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...