我有一个弹出的简单警报表单,我试图根据图像中像素的颜色设置不同的消息,警报的加载代码为:
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 :(";
}
}
答案 0 :(得分:1)
尝试采用Using Statement提供方便的语法,确保正确使用IDisposable
或File
等Bitmap
个对象。
这是正确的语法:您无需在.Dispose
上致电AlertImage
。
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 :(";
}