偶然会发生"The path is not of a legal form”,平率还相当高,不知道什么,好好的路径,怎么会不合法呢?
程序的一个线程会监视一个目录,包括所有子目录,找个一个最新的文件,然后进行相关操作,如果发现这个最新的文件持续几分钟没有更新,就重新搜索一遍那个目录,再找一个最新的文件进行操作,如此循环。
搜索文件的函数如下:
//读取当面目录中最新的MDB文件 private string getlastWriteMdbfile(string path) { string rfn = ""; try { DateTime lstdt = new DateTime(); foreach (string f in System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)) { System.IO.FileInfo fi = new System.IO.FileInfo(f); if (rfn == "") { lstdt = fi.LastWriteTime; rfn = f; } else { if (fi.LastWriteTime > lstdt) { lstdt = fi.LastWriteTime; rfn = f; } } } addlog ("获得文件名---"+rfn); } catch (Exception ex) { addlog("发生错误---" + ex.Message); //错误日志中经常出现 “发生错误---The path is not of a legal form.” } return rfn; }
if (!string.IsNullOrWhitespace(f)) { System.IO.FileInfo fi = new System.IO.FileInfo(f); }
Path是1级目录,里面的子目录可能三四级,最深应该不超过5级
foreach (string f in System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories))
System.IO.Directory.GetFiles(path, "*.mdb", System.IO.SearchOption.AllDirectories)这个放在外面,不要写在foreach里面试试
让工厂把旧文件移走了,文件少了,就没问题了,估计是函数本身的问题