1
我已經有兩個字段和一些方法繪圖類:DrawingGroup - crossthreading
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
:
<Image x:Name="MyImage" Width="320" Height="240"></Image>
我設置來源:
_drawingTool = new DrawingTool();
Dispatcher.Invoke(() => MyImage.Source = _drawingTool.GetImageSource());
_device.FrameReady += (sender, args) => Dispatcher.Invoke(() =>
{
_drawingTool.DrawSomething();
});
我收到來自評論的錯誤...我試圖調用DrawSomething()
方法和使用CheckAccess()
爲_drawingGroup
裏面DrawSomething()
- 沒有幫助。如何使工作成爲可能? 感謝您的幫助!
[編輯1]
也許我應該使用的東西比DrawingGroup
不同?
[編輯]
沒有人有想法嗎? :(