У меня есть WPF-приложение, которое ищет новые изображения в базе данных и, если что-то появляется, добавляет изображение в список.Когда возникает это событие, я хочу, чтобы оно добавило изображение в StackPanel.
Сначала я попытался просто вставить изображение, но получил InvalidOperationException
, говорящее «Вызывающий поток должен быть STA, потому что многие компоненты пользовательского интерфейсатребовать этого. "и придумал:
public void Instance_GraphicChanged(object sender, PropertyChangedEventArgs e)
{
foreach (Model.Graphic item in Model.IncomingCall.Instance.Graphics)
{
if(!_strings.Contains(item.ImageId.ToString()))
{
Thread thread = new Thread( new ThreadStart(
delegate()
{
//sp_images StackPanel for Images
sp_images.Dispatcher.Invoke(
DispatcherPriority.Normal, new Action(
delegate()
{
Image img = new Image();
img.Source = item.ImageObj; //ImageObj returns a BitmapImage
sp_images.Children.Add(img);
}
));
}
));
_strings.Add(item.ImageId.ToString());
}
}
}
Это не вызывает каких-либо исключений, но на самом деле ничего не происходит ...