ProgressDialog должен отображаться в течение 5 секунд, после чего OnBackPressed () должно выполняться.В настоящее время ProgressDialog никогда не появляется на экране.Если я помещаю OnBackPressed () в диалоговое окно хода выполнения делегата, но я получаю ошибку, что OnBackPressed () должно выполняться из MainThread.Что я могу сделать?
private async SomeAsyncMethod()
{
await ShowProgressDialog();
......
}
private Task ShowMessage()
{
var progressDialog = ProgressDialog.Show(this, "Bestandskorrektur", "Bestandskorrektur wird ausgeführt! Bite warten...", true);
new Thread(new ThreadStart(delegate
{
Thread.Sleep(5000);
RunOnUiThread(() => progressDialog.Hide());
OnBackPressed(); // Gives error.
})).Start();
return Task.CompletedTask;
}
ОБНОВЛЕНИЕ: Решение на основе ответов:
var pd = ProgressDialog.Show(this, "Bestandskorrektur", "Bestandskorrektur wird ausgeführt! Bitte warten...", true);
var h = new Handler();
void action()
{
RunOnUiThread(() => pd.Hide());
OnBackPressed();
}
h.PostDelayed(action, 5000);