Я пытаюсь отобразить индикатор выполнения, когда я запускаю асинхронную задачу, и после того, как асинхронная задача завершена, снова установите индикатор выполнения в невидимое состояние. По какой-то причине progressBar не отвечает на код, изменяющий свойство видимости.
Activity.RunOnUiThread(() =>
{
prog.Visibility = ViewStates.Visible;
});
Task<bool> createPickTask = Task.Run(() => Utils.createPick(firstBet, myBet, game));
bool createPickResult = createPickTask.Result;
if (createPickResult)
{
adapter.NotifyItemChanged(pos);
}
else
{
showErrorMessage();
}
Activity.RunOnUiThread(() =>
{
prog.Visibility = ViewStates.Gone;
});





For some reason the progressBar is not responding to the code that changes the visibility property.
Код не вступит в силу в пользовательском интерфейсе, пока вся эта часть кода не будет выполнена. Вы можете попробовать установить видимость индикатора выполнения в Задаче. Например:
private void Button_Click(object sender, System.EventArgs e)
{
Activity.RunOnUiThread(() =>
{
prog.Visibility = ViewStates.Visible;
});
Task<bool> createPickTask = Task.Run(/*async*/ () => {
//await Task.Delay(3000);
bool createPickResult = Utils.createPick(firstBet, myBet, game);
if (createPickResult)
{
adapter.NotifyItemChanged(pos);
}
else
{
showErrorMessage();
}
Activity.RunOnUiThread(() =>
{
prog.Visibility = ViewStates.Gone;
});
return createPickResult;
});
}
И результат: