我希望你可以帮助VB.net中对Streams的天真使用。
我有一个程序批量处理图像并且内存不足,重复使用(循环)以下内容:
Using str As Stream = File.OpenRead(file_stem + CStr(file_number) + "." + file_extension)
temp_img = Image.FromStream(str)
str.Close()
End Using
PictureBox1.Image = temp_img
bm = PictureBox1.Image.Clone
temp_img是全局声明的Dim temp_img As Image
。 bm在与循环Dim bm As Bitmap
相同的Sub例程中声明。
随着程序运行,我可以在任务管理器中看到内存使用量上升,然后崩溃并出现内存不足错误。好像每次我使用Stream时都会保留使用的内存。我在这里做错了什么?
修改 这个帖子现在似乎已经冷了,但我想我会为此分享我的“工作”。这似乎是一个VB.net错误,因为我修复它的方法是添加一个只显示一个的MsgBox,紧接在第一次调用处理60个图像集的子程序之前。我运行了一个处理96组60张图像的作业,内存使用量没有超过45MB左右。让我觉得它是一个错误的重要的事情是我只在第一组60之前显示MsgBox并且所有都是串行运行的。无论如何,显示MsgBox本身不应修复任何内容!