在任何情况下都不要尝试加载相同的文件两次。
string lastFile;
private void DisplayLastTakenPhoto()
{
string mypath = SavePathTextBox.Text;
var directory = new DirectoryInfo(mypath);
var myFile = directory.EnumerateFiles()
.Where(f => f.Extension.Equals(".jpg", StringComparison.CurrentCultureIgnoreCase) || f.Extension.Equals("raw", StringComparison.CurrentCultureIgnoreCase))
.OrderByDescending(f => f.LastWriteTime)
.First();
lastFile = myFile.FullName;
if (WaitForFile(myFile.FullName) == true)
{
LiveViewPicBox.Load(myFile.FullName);
}
}
我将最后加载的文件存储在lastFile
中。但是如何进行检查以防万一它会考虑Load(LiveViewPicBox.Load(myFile.FullName);
相同的文件呢?
答案 0 :(得分:0)
也许我错过了某些内容,但您是否只是添加一项检查,看看lastFile
是否与您尝试加载的文件相同?
if (lastFile != myFile.FullName && WaitForFile(myFile.FullName))
{
LiveViewPicBox.Load(myFile.FullName);
}
lastFile = myFile.FullName;
您可能还希望提前为lastFile
创建一个虚假值,这样您就不必处理空值。
string lastFile = string.Empty;
为了它的价值,您还可以劫持图片框的其中一个属性,例如Tag
来存储最后一个文件名。通过这种方式,您不需要局部变量,并且可以减少程序的其他部分重新分配值的机会。