在创建Bitmap的时候第一次有效,后面new Bitmap有概率出现异常:参数无效
然后看了下内存,在异常时候,内存增加了300M左右降不下来,此后就无法创建Bitmap。
原因找到了,内存泄漏引起的"参数无效"异常,但明明手动GC了,为何还会引发内存泄漏?
经过对GC机制的了解,可以简单理解为GC.Collect()是异步进行的,第二次new Bitmap的时候还没释放完内存
Bitmap bitmap = new Bitmap(width, hetght);//异常:参数无效
# 对bitmap进行一系列操作
bitmap.Dispose();
GC.Collect();
解决方法:在GC.Collect();后调用GC.WaitForPendingFinalizers();等待GC处理完成
GC.Collect();
GC.WaitForPendingFinalizers();