我目前正在开展一个学校项目,所以我是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.
谢谢你的时间!