在我的下载文件应用我收到Stackoverflow Exception as Unhandled
当我通过遍历目录来获取文件的详细信息和重命名&移动文件到某个文件夹我的代码是DirectoryInfo.GetFiles抛出未处理StackOverflowException
public FileInfo GetNewestFile()
{
try
{
System.IO.DirectoryInfo directory = new DirectoryInfo(TempDownloadFolder);
FileInfo result = null;
var list = directory.GetFiles(); // Stackoverflow Exception occurs here
if (list.Count() > 0)
{
result = list.OrderByDescending(f => f.LastWriteTime).First();
}
return result;
}
catch (Exception ex)
{
throw ex;
}
}
即应用程序下载PDF
和MS-Word
文件从一个网站,如果它下载PDF
文件顺序directory.GetFiles()
工作正常,但当它下载1个或多个PDF
文件,然后下载一个MS-Word
文件应用程序抛出System.Stackoverflow
异常。
当我重新启动应用程序下载MS-Word
文件作为其是在阵容的第一个文件它运作良好,只有等到以后几个文件已被下载
至于另一MS-Word`文件出现后下载我所知的例外状况是因为巨大的内存分配,但我想不通为什么它不发生的PDF
文件,但只发生了MS-Word
文件
编辑:
我用了返回最新的文件上面的代码是
return di.GetFiles()
.Union(di.GetDirectories().Select(d => GetNewestFile()))
.OrderByDescending(f => (f == null ? DateTime.MinValue : f.LastWriteTime))
.FirstOrDefault();
上面的代码也导致异常#1
一个文件夹名称温度是否有其他应用程序/方法不断写TempDownloadFolder? – Martheen
@Martheen是的文件将被多次downloded到'TempDownloadFolder',但重命名后它将被移动到永久下载文件夹 – Rajesh
结合他的评论使用简单的循环来获取最新的文件的PeterB答案可以通过避免更新文件,并且只保留在内存上的最大两个文件属性 – Martheen