为什么在这种情况下会出现“Out of Memory”异常?

时间:2017-04-25 08:32:40

标签: c# out-of-memory picturebox

我目前正在开展一个学校项目,所以我是C#的新手。它包含一个琐事游戏,如果用户正确回答了7个主题的所有问题,就可以赢得这个游戏。

用户“旋转”方向盘以选择7个主题中的一个。下面的算法随机化一个从1到7的数字,并检查用户是否先前回答了该主题的问题。如果没有,则轮子旋转直到它停在选定主体处的图像被提供给“wheel”PictureBox。

我遇到的问题是这个操作。因为它是一个多人游戏,“轮子旋转”发生超过14次,并且在大约11次旋转时,应用程序崩溃。

var OldImage = wheel.Image;
wheel.Enabled = true; // wheel is a pictureBox
bool ok = true;
while (ok == true)
{
    subject = randomNumber(); // there are 7 possible subjects
    if (done[subject] == 0) // this checks if the user had completed the subject
    {
        wheel.Image = Image.FromFile("Wheel\\Wheel" + subject + ".gif");
        ok = false;
    }
}
await Task.Delay(11500); // the gif stops after 11.5 seconds
wheel.Enabled = false;
if (OldImage != null)
{
    OldImage.Dispose();
}

我尝试了处理方法,但它没有用。

这会产生两种类型的例外:

1)An exception of type 'System.OutOfMemoryException' occurred in System.Drawing.dll but was not handled in user code指向wheel.Image = Image.FromFile("Wheel\\Wheel" + subject + ".gif");

2)An unhandled exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll Additional information: Exception has been thrown by the target of an invocation.

谢谢你的时间!

0 个答案:

没有答案