Как удалить дочерний элемент, добавленный в stackLayout

Я использую в нем scrollView и stackLayout. Динамическое добавление View в stackLayout. Я получаю следующее исключение, когда пытаюсь удалить добавленный вид:

Вызывающий поток не может получить доступ к этому объекту, поскольку им владеет другой поток.

Мой код выглядит следующим образом

<ScrollView Orientation="Vertical" VerticalOptions="FillAndExpand" 
            x:Name="MessagesScrollView">
    <StackLayout Padding="7" x:Name="MessagesStackLayout"
                 HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
    </StackLayout>
</ScrollView>

Добавьте следующий код:

MessagesStackLayout.Children.Clear();
foreach (var chat in messagesList)
{
    MessagesStackLayout.Children.Add(new CustomViewCell(chat));
}

person Deepak    schedule 16.05.2019    source источник
comment
где вы делали операции MessagesStackLayout.Children.Clear(); и MessagesStackLayout.Children.Add(new CustomViewCell(chat)); ? в ветке?   -  person Leo Zhu - MSFT    schedule 17.05.2019


Ответы (1)


У меня такое ощущение, что он не запускает код в MainThread, попробуйте следующее и посмотрите, сработает ли это для вас:

  Device.BeginInvokeOnMainThread(() =>
  {
     MessagesStackLayout.Children.Add(new CustomViewCell(chat));
  });
person FreakyAli    schedule 16.05.2019
comment
Спасибо за помощь @G.hakim, но я все равно получаю то же исключение - person Deepak; 16.05.2019
comment
Дело в том, что изначально нет проблем при добавлении детей. Исключение возникает, когда я пытаюсь добавить еще одно через некоторое время, например, изначально в представлении сейчас 12 сообщений. Если я пытаюсь добавить 13-е сообщение сейчас, возникает исключение. - person Deepak; 16.05.2019
comment
Итак, сначала вы добавляете кучу просмотров, затем удаляете их все и пробуете снова, я прав!? - person FreakyAli; 16.05.2019