Попробуйте это (мои извинения, у меня нет времени, чтобы проверить это в данный момент, так как я просматриваю вопросы, ожидая завершения сборок):
public async void OnAnimationEnd(Animation animation)
{
await Task.Run(() => Dodo()).ConfigureAwait(false);
RunOnUIThread(AssignDodoAdapter());
}
void Dodo()
{
AdRequest adRequest = new
AdRequest.Builder().AddTestDevice(AdRequest.DeviceIdEmulator).Build();
adView.LoadAd(adRequest);
AccessFiles();
adapter = new MyArryAdapter(this, Resource.Layout.AdaptView, CustomView.multipleData.ToList());
}
void AssignDodoAdapter()
{
listView.Adapter = adapter;
adapter.NotifyDataSetChanged();
pb.Visibility = ViewStates.Gone;
}
Примечание: я 'м, при условии, что адаптер, просмотр списка и т. д. представлены как поля, на которые можно ссылаться, как в вашем примере кода.
OnAnimationEnd () должен быть помечен как асинхронный.Он должен выполнять код в Dodo () в фоновом потоке (не в пользовательском интерфейсе), позволяя обрабатывать другие события в потоке пользовательского интерфейса, но, поскольку он ожидается, он не будет переходить к следующему блоку кода.После завершения задачи она должна запустить код в AssignDodoAdapter () в потоке пользовательского интерфейса.