如何确保方法中的pictureBox只加载文件一次?

时间:2015-12-16 20:47:14

标签: c# .net winforms

在任何情况下都不要尝试加载相同的文件两次。

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);相同的文件呢?

1 个答案:

答案 0 :(得分:0)

也许我错过了某些内容,但您是否只是添加一项检查,看看lastFile是否与您尝试加载的文件相同?

if (lastFile != myFile.FullName && WaitForFile(myFile.FullName))
{
    LiveViewPicBox.Load(myFile.FullName);
}
lastFile = myFile.FullName;

您可能还希望提前为lastFile创建一个虚假值,这样您就不必处理空值。

string lastFile = string.Empty;

为了它的价值,您还可以劫持图片框的其中一个属性,例如Tag来存储最后一个文件名。通过这种方式,您不需要局部变量,并且可以减少程序的其他部分重新分配值的机会。