Потоки с 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,

Почему я не могу заморозить объект, который создан на одну строку выше?

0 ответов

Другие вопросы по тегам