Arrays 尝试处理映像时应用程序崩溃
我正在创建一个包含两个PictureBox的应用程序,其中图像从一个数组加载,并在每个计时器滴答声中随机更改。我面临的问题是,有时无法加载图像,而将pictureBox留下一个小红十字。我读到我应该在加载新图像之前处理上一张图像(我是一个新手),但如果不在第一个滴答声中崩溃应用程序,我就无法让它工作。你能帮帮我吗Arrays 尝试处理映像时应用程序崩溃,arrays,image,crash,dispose,picturebox,Arrays,Image,Crash,Dispose,Picturebox,我正在创建一个包含两个PictureBox的应用程序,其中图像从一个数组加载,并在每个计时器滴答声中随机更改。我面临的问题是,有时无法加载图像,而将pictureBox留下一个小红十字。我读到我应该在加载新图像之前处理上一张图像(我是一个新手),但如果不在第一个滴答声中崩溃应用程序,我就无法让它工作。你能帮帮我吗 private void timer_Tick(object sender, EventArgs e) { index1 = rand.Next(0, pics
private void timer_Tick(object sender, EventArgs e)
{
index1 = rand.Next(0, pics.Length - 1);
index2 = rand.Next(0, pics.Length - 1);
pcb1.ImageLocation = pics[index1];
pcb2.ImageLocation = pics[index2];
}
try
{
pcb1.Image.Dispose();
pcb2.Image.Dispose();
index1 = rand.Next(0, pics.Length - 1);
index2 = rand.Next(0, pics.Length - 1);
pcb1.ImageLocation = pics[index1];
pcb2.ImageLocation = pics[index2];
}
catch (Exception)
{
throw;
}
-告诉我System.ArgumentException可能的解决方案:
try
{
private void timer_Tick(object sender, EventArgs e)
{
index1 = rand.Next(0, pics.Length);
if (File.Exists(pics[index1]))
{
Image img1 = Image.FromFile(pics[index1]);
pcb1.Image = img1;
}
index2 = rand.Next(0, pics.Length);
if (File.Exists(pics[index2]))
{
Image img2 = Image.FromFile(pics[index2]);
pcb2.Image = img2;
}
}
}
catch (OutOfMemoryException oomEx)
{
MessageBox.Show("Not a valid image.");
}
catch (Exception ex)
{
//all others...respond appropriately
}
抛出了什么异常?如果你还没有用try/catch来包装它,并告诉我们它报告了什么。@DonBoitnott编辑,希望这就是你的意思。我是一个认真的新手。ImageLocation…pics[]是否包含路径列表?更改:index1=rand.Next(0,pics.Length-1);To:index1=随机下一步(0,图片长度);(第二个参数是独占的)。不确定此处是否需要Dispose(),因为您只是重新分配了一个值,而没有完全删除图像对象。@DonBoitnott string[]pics=System.IO.Directory.GetFiles(Environment.CurrentDirectory+@“\pics\lvl1”);删除-1没有帮助。我不知道如何解释某些图像没有加载(我检查了,文件夹中的每个图像都显示了,只是不总是)。是的,这确实停止了崩溃和错误加载,但现在刷新率非常不一致。我们该怎么办?顺便说一句,谢谢你的帮助,非常感谢。:)这将是文件加载时间。你的休息时间是几点?您预计会找到多少文件/图像?你可以放慢速度。如果图像计数足够低,可以将图像预加载到列表或事件列表中。但是您必须小心,因为内存中的图像是不稳定的,并且最终可能会出现更多的引用错误。