как сделать так, чтобы изменения мгновенно появлялись в пользовательском интерфейсе? - PullRequest
0 голосов
/ 19 марта 2020

извините за мой плохой Энгли sh. я новичок в xamarin android, столкнулся с проблемой при попытке внести изменения в пользовательский интерфейс. Например, в прошлый раз я пытался изменить фон кнопки при нажатии на нее. Но это не происходит до конца метода click.

    private void MainActivity_Click(object sender, EventArgs e)
    {

        ((Button)(sender)).SetBackgroundResource(Resource.Drawable.background);

        //other code to run

    }

Я пытался сделать это в RunOnUiThread и BeginInvokeOnMainThread, но он тоже не работал. При отладке я обнаружил, что на самом деле он внес изменение немедленно, но он не появляется в приложении до тех пор, пока метод не будет завершен. Также есть событие, когда состояние кнопки ispressed = true и кнопка остается выделенной даже после отпускания, она застряла так до конца метода MainActivity_Click. Снова извините за мой плохой Энгли sh. Решения

1 Ответ

0 голосов
/ 19 марта 2020

Кажется, ваш "другой код для запуска" блокирует поток, вы можете попытаться использовать асинхронные задачи для обработки этих трудоемких операций.

попробуйте ниже:

private void MainActivity_Click(object sender, EventArgs e)
{

    ((Button)(sender)).SetBackgroundResource(Resource.Drawable.background);

    DoAsyncTask();

}


public async void DoAsyncTask()
{

  await Task.Run(() =>
   {
     //other code to run
   });

}

Вы можно посмотреть Асинхронное программирование

...