C# 如何解决这个问题;OutOfMemoryException“;,既然我只使用4/16 GB,为什么要使用它?

C# 如何解决这个问题;OutOfMemoryException“;,既然我只使用4/16 GB,为什么要使用它?,c#,graphics,out-of-memory,C#,Graphics,Out Of Memory,目前,我确实在一个为期8周的课程中学习C#。我有一个小程序,只能得到一个OutOfMemoryException 但我真的不知道为什么叫这个例外。我的意思是Windows任务管理器显示我只使用了4个16 GB RAM。即使我重新启动计算机后尝试测试此程序 我有一张表格,应该和工作有关。。。但我看不出有错 下面您将看到此应用程序中唯一按钮的代码 private void cmdAuswahl_Click(object sender, EventArgs e) { Graphics z = Cr

目前,我确实在一个为期8周的课程中学习C#。我有一个小程序,只能得到一个OutOfMemoryException

但我真的不知道为什么叫这个例外。我的意思是Windows任务管理器显示我只使用了4个16 GB RAM。即使我重新启动计算机后尝试测试此程序

我有一张表格,应该和工作有关。。。但我看不出有错

下面您将看到此应用程序中唯一按钮的代码

private void cmdAuswahl_Click(object sender, EventArgs e)
{
  Graphics z = CreateGraphics();
  Font df = new Font("Verdana", 11);
  SolidBrush pinsel = new SolidBrush(Color.Black);

  OpenFileDialog ofd = new OpenFileDialog();
  Image bild;

  z.Clear(BackColor);

  ofd.InitialDirectory = "C:\\Temp";
  ofd.Title = "Bitte eine Bilddatei wählen";
  ofd.Filter = "Bild-Dateien (*.jpg; *.gif)|*.jpg; *.gif";

  if (ofd.ShowDialog() == DialogResult.OK)
  {
     bild = Image.FromFile(ofd.FileName);
     z.DrawImage(bild, 20, 40);
     z.DrawString("Breite: " + bild.Width + ", Höhe: " +
     bild.Height, df, pinsel, 20, 20);
  }
  else
     MessageBox.Show("Keine Bilddatei ausgewählt");
}
我用“crtl+f5”启动应用程序,然后单击按钮。 在此之后,我选择一个122 KB的image.jpg

在此之后,我得到了OutOfMemoryException

关于JIT调试的信息 anstelle dieses Dialogfelds发现你是一个很好的朋友

************** Ausnahmetext **************
System.OutOfMemoryException: Nicht genügend Arbeitsspeicher.
   bei System.Drawing.Image.FromFile(String filename, Boolean useEmbeddedColorManagement)
   bei System.Drawing.Image.FromFile(String filename)
   bei ZeichnenBild.Form1.cmdAuswahl_Click(Object sender, EventArgs e) in D:\CSharp\Kurs\W6T1 - 7-01\Zeichnen\10.4.1_ZeichnenBild\ZeichnenBild\Form1.cs:Zeile 31.
   bei System.Windows.Forms.Control.OnClick(EventArgs e)
   bei System.Windows.Forms.Button.OnClick(EventArgs e)
   bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   bei System.Windows.Forms.Control.WndProc(Message& m)
   bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
   bei System.Windows.Forms.Button.WndProc(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Geladene Assemblys **************
mscorlib
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.
----------------------------------------
ZeichnenBild
    Assembly-Version: 1.0.0.0.
    Win32-Version: 1.0.0.0.
    CodeBase: file:///D:/CSharp/Kurs/W6T1%20-%207-01/Zeichnen/10.4.1_ZeichnenBild/ZeichnenBild/bin/Debug/ZeichnenBild.exe.
----------------------------------------
System.Windows.Forms
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
System
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
System.Drawing
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
System.Configuration
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
System.Core
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
----------------------------------------
System.Xml
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
System.Drawing.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing.resources/v4.0_4.0.0.0_de_b03f5f7f11d50a3a/System.Drawing.resources.dll.
----------------------------------------
System.Windows.Forms.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------
mscorlib.resources
    Assembly-Version: 4.0.0.0.
    Win32-Version: 4.7.3056.0 built by: NET472REL1.
    CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
----------------------------------------

************** JIT-Debuggen **************
Um das JIT-Debuggen (Just-In-Time) zu aktivieren, muss in der
Konfigurationsdatei der Anwendung oder des Computers
(machine.config) der jitDebugging-Wert im Abschnitt system.windows.forms festgelegt werden.
Die Anwendung muss mit aktiviertem Debuggen kompiliert werden.

Zum Beispiel:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Wenn das JIT-Debuggen aktiviert ist, werden alle nicht behandelten
Ausnahmen an den JIT-Debugger gesendet, der auf dem
Computer registriert ist, und nicht in diesem Dialogfeld behandelt.
**********Ausnahmetext**************
System.OutOfMemoryException:Nicht genügend Arbeitsspeicher。
bei System.Drawing.Image.FromFile(字符串文件名,布尔值使用EmbeddedColorManagement)
bei System.Drawing.Image.FromFile(字符串文件名)
bei ZeichnenBild.Form1.cmdAuswahl_单击D:\CSharp\Kurs\W6T1-7-01\Zeichnen\10.4.1_ZeichnenBild\ZeichnenBild\Form1.cs:Zeile 31中的(对象发送方,事件参数e)。
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs-mevent)
bei System.Windows.Forms.Control.WmMouseUp(消息&m,鼠标按钮,Int32点击)
bei System.Windows.Forms.Control.WndProc(Message&m)
bei System.Windows.Forms.ButtonBase.WndProc(Message&m)
bei System.Windows.Forms.Button.WndProc(Message&m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message&m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message&m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)
**************吉拉丁议会**************
mscorlib
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll.
----------------------------------------
泽克内比尔德
程序集版本:1.0.0.0。
Win32版本:1.0.0.0。
代码库:file:///D:/CSharp/Kurs/W6T1%20-%207-01/Zeichnen/10.4.1_ZeichnenBild/ZeichnenBild/bin/Debug/ZeichnenBild.exe。
----------------------------------------
System.Windows.Forms
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll.
----------------------------------------
系统
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll.
----------------------------------------
系统图
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll.
----------------------------------------
系统配置
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll.
----------------------------------------
系统核心
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll.
----------------------------------------
命名空间
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll.
----------------------------------------
系统、绘图、资源
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing.resources/v4.0_4.0.0.0_de_b03f5f7f11d50a3a/System.Drawing.resources.dll.
----------------------------------------
System.Windows.Forms.resources
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_de_b77a5c561934e089/System.Windows.Forms.resources.dll.
----------------------------------------
mscorlib.resources
程序集版本:4.0.0.0。
Win32版本:4.7.3056.0生成者:NET472REL1。
代码库:file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_de_b77a5c561934e089/mscorlib.resources.dll.
----------------------------------------
**************JIT调试程序**************
嗯,这是一个JIT调试(及时的)系统,需要更多的时间
计算机的配置
(machine.config)在Abschnitt system.windows.forms中调试Wert。
这是一个很好的例子。
祖姆·贝斯皮尔:
我们需要及时的调试,我们需要及时的调试
他是一个准时制的调试器
计算机注册表,与Diesm Dialogfeld behandelt中的数据不符。

看起来您是以x86方式编译的,x86进程的ram不能超过2GB。编译为x64。另外,对于单个映像来说,内存太多,出现了一些不寻常的情况

看起来您正在编译为x86,x86进程的ram不能超过2GB。编译为x64。此外,对于单个图像,这是太多的内存,有一些不寻常的事情发生了

感谢您的帮助,我是否需要进行更改?项目道具