C# DrawingGroup-交叉线程

C# DrawingGroup-交叉线程,c#,wpf,thread-safety,drawing,multithreading,C#,Wpf,Thread Safety,Drawing,Multithreading,我有一个类,它有两个字段和一些绘图方法: public class DrawingTool { private readonly DrawingGroup _drawingGroup; private DrawingImage _imageSource; public DrawingTool() { _drawingGroup = new DrawingGroup(); _imageSource = new DrawingImag

我有一个类,它有两个字段和一些绘图方法:

public class DrawingTool
{
    private readonly DrawingGroup _drawingGroup;
    private DrawingImage _imageSource;

    public DrawingTool()
    {
        _drawingGroup = new DrawingGroup();
        _imageSource = new DrawingImage(_drawingGroup);
    }

    public DrawingImage GetImageSource()
    {
        return _imageSource;
    }

    public void DrawSomething()
    {
        using (DrawingContext dc = _drawingGroup.Open()) // HERE'S AN ERROR - _drawing group is being used by another thread (InvalidOperationException)
        {
           // draw something here
        }
    }
}
这是一个
WPF
项目,因此我还有一张
图像

<Image x:Name="MyImage" Width="320" Height="240"></Image>
我从评论中得到一个错误。。。我试图调用
DrawSomething()
方法,并在
DrawSomething()
内部使用
CheckAccess()
,但没有帮助。如何使其工作成为可能? 提前谢谢你的帮助

[编辑1.]
也许我应该使用不同于
DrawingGroup

[编辑2.]

没人有主意吗(

好的,我找到了解决方案……很明显……我必须在主线程(在主窗口构造函数中)中初始化整个绘图工具,然后设置
MyImage.Source
(也在同一个位置)。现在一切都可以正常工作了!:)

_drawingTool = new DrawingTool();
Dispatcher.Invoke(() => MyImage.Source = _drawingTool.GetImageSource());

_device.FrameReady += (sender, args) => Dispatcher.Invoke(() =>
{
    _drawingTool.DrawSomething();
});