InteropBitmap synchronization
本文关键字:synchronization InteropBitmap | 更新日期: 2023-09-27 17:57:57
WPF InteropBitmap可以从共享内存创建,即
Imaging.CreateBitmapSourceFromMemorySection()
在这种情况下,我们可以更新另一个线程或进程中的共享内存,然后在更新后,调用InteropBitmap.Invalidate()来显示更改。
从WPF源代码来看,InteropBitmap只是IWICBitmap的包装器,但它没有公开用于独占写入的IWICBitmap::lock。
那么,如何同步WPF InteropBitmap的写入和读取?
- 更新发生在用户的线程中
- 读取总是通过IWICBitmap发生在WPF内部渲染线程中来源::CopyPixels
感谢
您可以创建一个WrapperClass,它公开了一个锁对象和操作Image的方法。是一些工作,但会工作100%
类似于:
class InteropBitmapSyncWrapper
{
public InteropBitmapSyncWrapper(InteropBitmap wrappedBitmap)
{
WrappedBitmap = wrappedBitmap;
this.Lock = new Object();
}
public InteropBitmap WrappedBitmap
{
get;
set;
}
public Object Lock
{
get;
private set;
}
}