【发布时间】:2013-12-04 11:02:07
【问题描述】:
谁能帮我解决这个问题...
我正在尝试创建一个具有多线程处理图像的单个窗口。
如果我为每个处理操作启动process.exe,我不会遇到这个问题......
这是我的功能:
private ImageSource ImageApplyEffect(ImageSource imageSource, Effect effect, Size size)
{
DrawingVisual d = new DrawingVisual();
DrawingContext dc = d.RenderOpen();
dc.DrawImage(imageSource, new Rect(new Point(0, 0), size));
d.Effect = effect;
dc.Close();
dc = null;
RenderTargetBitmap frameRenderTargetBitmap2 = new RenderTargetBitmap((int)size.Width,
(int)size.Height,
1 / 96,
1 / 96,
PixelFormats.Default);
frameRenderTargetBitmap2.Render(d);
d = null;
BitmapFrame frameBitmapFrame2 = BitmapFrame.Create(frameRenderTargetBitmap2);
frameRenderTargetBitmap2 = null;
MemoryStream mStream = new MemoryStream();
PngBitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(frameBitmapFrame2);
encoder.Save(mStream);
BitmapImage bImg = new BitmapImage();
bImg.BeginInit();
bImg.StreamSource = mStream;
bImg.EndInit();
frameBitmapFrame2 = null;
ImageSource imgS = bImg;
encoder = null;
return imgS;
}
我得到了这个例外:
调用线程无法访问此对象,因为另一个线程拥有它!
例外:
em System.Windows.DependencyObject.GetValue(DependencyProperty dp)
时间 System.Windows.Media.Effects.PixelShader.ManualUpdateResource(通道 频道,布尔型 skipOnChannelCheck) em System.Windows.Media.Effects.PixelShader.UpdateResource(通道 频道,布尔型 skipOnChannelCheck) em System.Windows.Media.Effects.PixelShader.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(通道 频道)时间 System.Windows.Media.Effects.ShaderEffect.AddRefOnChannelCore(通道 频道)时间 System.Windows.Media.Effects.Effect.System.Windows.Media.Composition.DUCE.IResource.AddRefOnChannel(通道 频道)em System.Windows.Media.Visual.UpdateEffect(频道 通道、ResourceHandle 句柄、VisualProxyFlags 标志、布尔值 isOnChannel) 时间 System.Windows.Media.Visual.RenderRecursive(RenderContext ctx) em System.Windows.Media.Visual.Render(RenderContext ctx,UInt32 childIndex) em System.Windows.Media.Renderer.Render(IntPtr pRenderTarget,通道通道,视觉视觉,Int32 宽度,Int32 高度,双 dpiX,双 dpiY,矩阵 worldTransform,矩形 windowClip) 时间 System.Windows.Media.Imaging.BitmapVisualManager.Render(视觉视觉, 矩阵 worldTransform, Rect windowClip) em System.Windows.Media.Imaging.BitmapVisualManager.Render(视觉)
【问题讨论】:
标签: c# .net wpf multithreading exception