Потоки с ImageDrawings и заморозить
У меня проблема с созданием изображения в фоновом потоке. У меня есть основной значок (16x16 пикселей), который должен быть объединен с другими значками, которые могут быть наложением. Мой код для этого:
private void GenerateConnectionIcon()
{
var dGr = new DrawingGroup();
var newGroupItem = new ImageDrawing(_ConnectionIcon, new Rect(0, 0, 16, 16));
newGroupItem.Freeze(); //Here it throws the expection
dGr.Children.Add(newGroupItem);
foreach (var anOverlay in _ConnectionIconOverlays)
{
dGr.Children.Add(new ImageDrawing(anOverlay, new Rect(0, 0, 16, 16)));
}
dGr.Freeze();
var finalIcon = new DrawingImage(dGr);
finalIcon.Freeze();
_ConnectionIconMerged = finalIcon;
}
Код завершается в третьей строке, потому что вызывающий поток не является владельцем объекта. Я немного запутался по этому поводу, потому что объект создан на одну строку выше. Переменная _ConnectionIcon
является ImageSource
и замерз.
Точное сообщение об ошибке The calling thread cannot access this object because a different thread owns it
,
Почему я не могу заморозить объект, который создан на одну строку выше?