Я запускаю следующее событие в моем приложении Xamarin:
AppEvents.Instance.UI.RiseSearchStringTypingEvent(this, new EventArgs());
HomePage.xaml.cs codebehind подписчик-событие выполняет автоматическую прокрутку вверх каждый раз, когда событиепри каждом входе в поле поиска
void OnSearchStringTyping(object sender, EventArgs e)
{
scrollView.ScrollToAsync(0.0, 0.0, true);
}
, когда строка поиска завершена и пользователь нажимает кнопку подтверждения, метод Oncompleted () вызывается для SearchHeaderView.xaml.cs , который переходит на SearchPage
void OnCompleted(object sender, EventArgs e)
{
var tag = this + ".OnCompleted";
try
{
if (string.Compare(LastSearchText, SearchEntry.Text) == 0) return
if (Device.RuntimePlatform == Device.Android)
{
SearchRequest();
}
else if (Device.RuntimePlatform == Device.iOS)
{
var task = new Task(SearchRequest);
task.Start();
}
LastSearchText = SearchEntry.Text;
}
catch (Exception ex)
{
Track.Exception(tag, ex);
}
}
Эта процедура прекрасно работает на платформах iOS ... Но в Android, когда я отправляю строку поиска,приложение вылетает с ObjectDisposedException на ScrollView
Я думаю, проблема в том, что приложение пытается прокрутить представление снова после этогоотходит от домашней страницы.Метод SearchRequest () на Android не вызывается в новом потоке, а iOS вызывается.Как я могу это исправить?Я не могу просто заставить метод вызываться асинхронно, потому что Поиск тогда не работает.