c# - 尝试更改图像时内存不足崩溃?

标签 c#

(C#) 当我尝试设置一个从文件中打开的“图片框”的图像时,出现内存不足的崩溃。

我的代码:

    string file = openImageBox.Text; // Our file 
    if (File.Exists(file))
    {
        File.Open(file, FileMode.Open); // Open the file for use.
        Output.Text = "File Open Success!"; //Informing the user on how sucessful they are. 
        Output.ForeColor = System.Drawing.Color.Black;
        Image img = Image.FromFile(file);
        Display.Image = img;
    }

最佳答案

可能不是正确的答案(谁知道..它可能会给你带来各种各样的问题)。

您不需要“打开文件以供使用”。这是持有您不需要的文件的句柄。只需直接调用 Image.FromFile 即可正常工作。

所以删除这个:

File.Open(file, FileMode.Open); // Open the file for use.

编辑:

为了完整性(并帮助您学习),如果您想要关闭它,您需要存储对流的引用。我在上面告诉您要删除的内容包含文件的句柄。该文件现在基本上处于打开状态……直到您关闭它。

对于其他代码(您没有使用像 Image.FromFile 这样的方法),您可以存储文件的句柄以便关闭它......或者使用 使用 语句为您关闭它。

选项 A:

var stream = File.Open(file, FileMode.Open);

// do stuff here

stream.Close();

选项 B(首选):

using (var stream = File.Open(file, FileMode.Open)) {

    // do stuff here

} // stream.Close automatically called for you

关于c# - 尝试更改图像时内存不足崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20318686/

相关文章:

c# - ASP.NET Core 同步和异步 Controller 操作之间没有太大区别

c# - 如何删除linq查询中的重复项

javascript - 如何在 Jint 中使用下划线函数

c# - C# 程序员在 C++ 中读取 ProcessMemory,始终失败

c# - "There is already an open DataReader associated with this Command which must be closed first."

c# - ASP.NET 按日期范围对多个 SQL 数据库表进行排序

c# - 如何找到索引序列来对列表进行排序?

c# - SelectSingleNode 返回错误的 Node 实例值

c# - 适用于 Windows 和 Linux 的同一台机器上的套接字

c# - 为什么 WhenAll 无限期地等待多个 ping?