使用ImageDrawings进行线程处理并冻结

时间:2014-10-23 15:22:56

标签: c# wpf multithreading freezable

我在后台线程中创建图像时遇到问题。 我有一个主图标(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;
}

代码在第三行退出,因为调用线程不是对象的所有者。 我对此有点困惑,因为对象是在上面创建的一行。变量_ConnectionIconImageSource并且已冻结。

确切的错误讯息是The calling thread cannot access this object because a different thread owns it

为什么我无法冻结上面创建一行的对象?

0 个答案:

没有答案