से बचने के लिए मैं 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 को a.md का नाम बदलता हूं, EnumerateFiles
पुराना और नया फ़ाइल नाम देता है .. पावरशेल का नतीजा है कि मेरे पास 3 फाइलें हैं, जबकि एन्युमरेटफाइल 4 फाइलें लौटाती हैं।
मैंने कहीं पढ़ा है एन्युमेरेटफाइल आलसी लोडिंग के साथ किसी प्रकार का कैशिंग करता है? लेकिन फ़ाइल का नाम बदलने पर कैश को अमान्य नहीं करना चाहिए?
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"
जब आप फ़ाइल का नाम बदल रहे हैं? जबकि 'फॉरच' लूप चल रहा है या 2 कॉल के बीच है? यूनिट टेस्ट में –
@ डारिनडिमिट्रोव, मैं विभिन्न चीजों की कोशिश कर रहा था। परीक्षण विफल रहे थे। तो मैंने सभी परीक्षण मामलों को हटा दिया और सबकुछ मैन्युअल रूप से किया। मैं foreach से पहले इसे नाम बदल रहा था। मैंने मैन्युअल नामकरण, पुन: संकलन और परीक्षणों को फिर से शुरू करने का भी प्रयास किया। अब यह 7 फाइलें दिखा रहा है .. फ़ाइल एक्सप्लोरर और पावरशेल 3 फाइलें दिखाएं। Msdn से – Annie
यह कहता है कि यह कैशिंग नहीं है 'लौटाया गया संग्रह कैश नहीं किया गया है; संग्रह पर GetEnumerator को प्रत्येक कॉल एक नई गणना शुरू करेगा। यदि आप इसके बजाय 'GetFiles' का उपयोग करते हैं तो क्या होता है? –