我有一个应用程序,可以轮询目录中新添加的文件并处理任何新文件。它是一个运行在Windows7上的C# (.NET 4)应用程序,目录实际上是一个网络共享。
问题是,当迭代遍历文件以检查它们是否存在时,应用程序有时会崩溃而不抛出异常。(我确实使用了try-catch,并且没有非托管代码、委托代码或任何异常。这是一个简单的应用程序)
迭代代码如下所示:
System.IO.DirectoryInfo dp = new System.IO.DirectoryInfo(destinationPath);
System.IO.FileSystemInfo[] destinationFiles = dp.GetFileSystemInfos();
foreach (FileSystemInfo fileSysInfo in destinationFiles)
{
string filePath = fileSysInfo.FullName;
if (filePath.EndsWith(FILE_VALID_EXT) && !Directory.Exists(filePath) && !File.Exists(filePath + FILE_PROCESSED_EXT))
{
// Do processing. It doesn't reach this point! I know because I have a logging statement.
}
}代码失败是因为远程目录(暂时)不可用吗?还是因为文件或目录上有某种锁?
我怎样才能避免这种情况?也许有一种更安全的方式来使用C#文件I/O。
任何建议都很感谢!
发布于 2015-03-23 03:50:47
通常,当.net应用程序在没有通知的情况下崩溃时,是因为堆栈溢出。这只是一个想法:检查您正在枚举的目录结构是否具有导致无限循环的符号链接。
https://stackoverflow.com/questions/9994358
复制相似问题