我正在使用Avalonia UI 框架来构建一个 dotnet 核心 MVVM 应用程序。
我想显示来自 WebCam 的帧并创建了一个简单的 WebCamViewModel:
public class WebCamViewModel : ViewModelBase
{
private Bitmap webCamImage;
public Bitmap WebCamImage
{
get { return webCamImage; }
private set { this.RaiseAndSetIfChanged(ref webCamImage, value); }
}
public WebCamViewModel(WebCamImageService webcamImageService)
{
webcamImageService.OnFrame += BitmapReceived;
}
public void BitmapReceived(Bitmap bitmap)
{
WebCamImage = bitmap;
}
}
我尝试了 naiv 方法并像这样处理旧位图:
public void BitmapReceived(Bitmap bitmap)
{
if (webCamImage != null) webCamImage.Dispose();
WebCamImage = bitmap;
}
我得到 System.NullReferenceException:“对象引用未设置为对象的实例。” 在调整应用程序大小时。堆栈跟踪
如何正确处理旧的位图实例,以便 GC 没有太多工作要做?
是否有更好的方法来显示动态变化的图像内容?