Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# System.Windows.Media.Imaging.WriteableBitmap内存泄漏?_C#_Memory Leaks_Writeablebitmap_Writeablebitmapex_System.windows.media - Fatal编程技术网

C# System.Windows.Media.Imaging.WriteableBitmap内存泄漏?

C# System.Windows.Media.Imaging.WriteableBitmap内存泄漏?,c#,memory-leaks,writeablebitmap,writeablebitmapex,system.windows.media,C#,Memory Leaks,Writeablebitmap,Writeablebitmapex,System.windows.media,考虑以下代码引发异常“MILERR\u WIN32ERROR”: while(true) { System.Windows.Media.Imaging.WriteableBitmap writableBitMap = new System.Windows.Media.Imaging.WriteableBitmap(100, 200, 96, 96, System.Win

考虑以下代码引发异常“MILERR\u WIN32ERROR”:

while(true)
            {
                System.Windows.Media.Imaging.WriteableBitmap writableBitMap =
                                    new System.Windows.Media.Imaging.WriteableBitmap(100, 200, 96, 96, System.Windows.Media.PixelFormats.Bgra32, null);
            }

WriteableBitmap没有实现IDisposable,我根本不知道为什么会发生内存泄漏(我的原始代码要复杂得多,我一直跟踪到这一点)。

内存泄漏问题源于BitmapSource的内存泄漏。在谷歌上搜索会发现更好的结果:)


表示一旦使用了writableBitMap,就应该将其分配给“null”。我会说,在将其赋值为null之前,请尝试使用Freeze()方法,然后再试一次。如果在此之后,如果您看到内存泄漏持续存在,(CacheOption),请将其设置为BitmapCacheOption.OnLoad。

您针对的是哪个版本的vs和哪个版本的.net framework?此代码应该很好(请记住,它位于无限循环中,我理解原始代码中不存在)。在对错误执行快速搜索后,似乎是由大量图像对象引起的。所以,我想您应该看看代码的其余部分发生了什么。据我所知,你知道这个while(true)是一个无限循环(你的实际代码应该在该循环中有一些东西在某个点打破它,否则你就有错误的原因了)。我试图编写一个程序,逐帧读取视频文件,并将帧均匀地混合在一起,代码基本上通过一个视频文件读取每一帧,将其写入一个writeablebitmap,将其插入另一帧,然后进入下一帧,在视频帧用完时终止。我想我可以尝试将多组帧批处理在一起以加快速度。您的意图很好,但发布的代码没有这样做。您发布的代码一遍又一遍地实例化WriteableBitmaps,从未停止过。读取文件时,循环会自动退出,因为给定的条件会告诉循环退出。有一段时间(正确)你必须设置一个退出条件,否则循环将永远继续(更好:直到程序崩溃)。@varocabas这没有意义,即使我无限循环并创建可写位图,也不应该出现内存不足崩溃,垃圾收集器应该介入,并确保在可写位图超出范围时释放内存。代码片段足以说明内存问题。不起作用,并且您的另一个stackoverflow链接用于另一个类,writeablebitmap没有缓存选项:(通过谷歌搜索,我认为这是一个已知问题,writeablebitmaps只是泄漏内存,似乎没有明显的解决方案