创建了一个位图变量来获得像素颜色,我如何停止使用该文件以便进行文件删除
本文关键字:文件 何停止 删除 颜色 一个 位图 像素 变量 创建 | 更新日期: 2023-09-27 18:20:41
我有一个弹出的简单警报表单,我试图根据图像中像素的颜色生成不同的消息,警报的加载代码是:
private void Alert_Load(object sender, EventArgs e)
{
Bitmap myBitmap = new Bitmap(Properties.Settings.Default.AlertFile);
Color pixelColor = myBitmap.GetPixel(50, 50);
File.Delete(Properties.Settings.Default.AlertFile);
if (pixelColor == Color.FromArgb(255, 237, 28, 36))//red
{
AlertMessage.Text = "Test Message 1: It is Red";
}
else
{
AlertMessage.Text = "Test Message 2: It isn't Red";
}
TopMost = true;
}
无论File.Delete行在哪里,我都会收到文件正在使用中,无法删除的消息。
我在使用FileSystemWatcher之前遇到过这个问题,我无法删除仍在使用的文件,我不得不停止观察程序,但在这种情况下,我不知道如何解决它。
文件在此处开始使用:
Bitmap myBitmap = new Bitmap(Properties.Settings.Default.AlertFile);
我试着添加:
myBitmap.Dispose();
但我仍然得到它正在使用的信息。
编辑:
使用修复
Color pixelColor;
using (var AlertImage = new Bitmap(Properties.Settings.Default.AlertFile))
{
pixelColor = AlertImage.GetPixel(50, 50);
AlertImage.Dispose();
File.Delete(Properties.Settings.Default.AlertFile);
if (pixelColor == Color.FromArgb(255, 237, 28, 36))
{
AlertMessage.Text = @"It was Red :)";
}
else
{
AlertMessage.Text = @"It was not Red :(";
}
}
尝试采用Using Statement,它提供了一种方便的语法,可以确保正确使用File
或Bitmap
等IDisposable
对象。
这是正确的语法:您不需要在AlertImage
上调用.Dispose
。
Color pixelColor;
using (var AlertImage = new Bitmap(Properties.Settings.Default.AlertFile))
{
pixelColor = AlertImage.GetPixel(50, 50);
}
File.Delete(Properties.Settings.Default.AlertFile);
if (pixelColor == Color.FromArgb(255, 237, 28, 36))
{
AlertMessage.Text = @"It was Red :)";
}
else
{
AlertMessage.Text = @"It was not Red :(";
}