5
我使用EnumerateFiles
讓所有* .MD目錄:EnumerateFiles以避免緩存
foreach (var mdName in Directory.EnumerateFiles(Path.Combine(BaseDirectory,
"assets/markdowns"), "*.md", SearchOption.AllDirectories))
{
// async md parser call goes here
}
我有三個測試文件a.md
,b.md
和c.md
。
現在,當我將a.md重命名爲a1.md時,EnumerateFiles
返回了新舊文件名。PowerShell的結果說我有3個文件,而EnumerateFiles返回4個文件。
我在某處讀過EnumerateFiles做了某種緩存,使用延遲加載?但是不應該無效文件重命名時緩存嗎?
的GetFiles/EnumerateFiles輸出:
[0]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\a.md"
[1]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\b.md"
[2]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\c.md"
[3]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a.md"
[4]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a1.md"
[5]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a2.md"
[6]: "C:\\Repos\\KiddiesBlog\\Tests\\bin\\Debug\\assets/less\\_a3.md"
什麼時候你正在重命名文件?當'forach'循環正在運行或2次調用之間? –
@DarinDimitrov,在單元測試中我嘗試了不同的東西。測試失敗了。所以我刪除了所有的測試用例並手動完成了所有的測試我是在foreach之前重命名它的。我甚至嘗試過手動重命名,重新編譯並重新運行測試。現在它顯示7個文件..文件資源管理器和PowerShell顯示3個文件。 – Annie
msdn表示它沒有緩存'返回的集合沒有被緩存;對集合上的GetEnumerator的每次調用都會啓動一個新的枚舉。如果您使用'GetFiles',會發生什麼? –