C# .NET问题在一台计算机和另一台计算机上运行正常';s堆栈溢出异常

C# .NET问题在一台计算机和另一台计算机上运行正常';s堆栈溢出异常,c#,overflow,C#,Overflow,我在System.Drawing.Graphics上编写了一个简单的C#程序,使用了一些图形函数,如drawElipse和drawLine。它在一台电脑上工作得很好,但在我的笔记本电脑上,它在图形功能上出现了溢出异常。我需要程序在五小时后在笔记本电脑上进行演示,请帮助我 以下是我在其中得到错误的两个函数: private void drawDot(int n) { Graphics gfx = CreateGraphics(); int mapx = (int)verts[n].

我在System.Drawing.Graphics上编写了一个简单的C#程序,使用了一些图形函数,如drawElipse和drawLine。它在一台电脑上工作得很好,但在我的笔记本电脑上,它在图形功能上出现了溢出异常。我需要程序在五小时后在笔记本电脑上进行演示,请帮助我

以下是我在其中得到错误的两个函数:

private void drawDot(int n)
{
    Graphics gfx = CreateGraphics();
    int mapx = (int)verts[n].mapx;
    int mapy = (int)verts[n].mapy;
    Pen myPen = new Pen(Color.DarkOliveGreen, 5);
    if (mapx > 2 && mapy > 2)
    {

        Rectangle rect = new Rectangle((int)mapy - 2, (int)mapx - 2, 10, 10);
        gfx.DrawEllipse(myPen, rect);
    }

}

private void drawLine(int n, int k)
{
    int mapnx = (int)verts[n].mapx;
    int mapny = (int)verts[n].mapy;
    int mapkx = (int)verts[k].mapx;
    int mapky = (int)verts[k].mapy;
    Graphics gfx = CreateGraphics();
    Pen myPen = new Pen(Color.DarkOliveGreen, 3);
    gfx.DrawLine(myPen, mapny, mapnx, mapky, mapkx);
}

这可能与一台机器将其jit到x64有关,而另一台机器将其jit到x86有关。

您需要在调用的方法中显式地处理
图形对象。你可以用两种不同的方式来做

  • 在方法末尾显式调用
    gfx.Dispose()
  • 使用
  • 将访问
    gfx
    的代码包装在
    中,如下所示:

    using (Graphics gfx = CreateGraphics())
    {
        // call gfx methods liek DrawLine()
    }
    

    您可以在MSDN文档中阅读更多有关该方法的信息。

    您是否有一些示例代码?您的笔记本电脑的内存是否比它使用的计算机少。。。。投票结束,没有代码,没有真正的问题。我同意这是一个太模糊的问题。大约一年前我也有过类似的问题——结果是一个有缺陷的视频驱动程序。尝试在有问题的机器上更新。如果是问题,如何解决?请注意,Pen也可以识别。