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



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

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);是同一个文件,而不是?

也许我遗漏了什么,但你不能添加一个检查,看看lastFile是否与你试图加载的文件相同吗?

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

您可能还想提前为lastFile创建一个伪值,这样就不必处理null了。

string lastFile = string.Empty;

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

最新更新