Вы можете использовать асинхронную загрузку и многопоточность, если вы действительно хотите загрузить их «сразу» (например, параллельно, одновременно). Возможно, хотя вы хотите, чтобы все документы XML анализировались и загружались одновременно на основе вашего комментария, что вы будете сравнивать их. Как насчет использования массива объектов XmlDocument для сопоставления входного массива имен файлов? Это самый простой способ загрузить их все. Вы также можете использовать коллекцию, если вы хотите, чтобы она была динамичной.
public void CompareXMLInDir(string path)
{
DirectoryInfo dir = new DirectoryInfo(path);
CompareXML(dir.GetFiles("*.xml"));
}
public void CompareXML(FileInfo[] xmlFileNames)
{
XmlDocument[] xmlDocuments = new XmlDocument[xmlFileNames.Length];
for(int i = 0; i < xmlFileNames.Length; i++)
{
xmlDocuments[i] = new XmlDocument();
xmlDocuments[i].Load(xmlFileNames[i].FullName);
}
//...do compare work here
}
Этот код также позволяет вам получить все файлы с расширением ".xml" в каталоге. Это похоже на то, что вы пытаетесь сделать со счетчиком, но затем вы ссылаетесь на статически определенный массив имен файлов. Это приведет к ошибке, если число файлов XML в этом каталоге превысит имена файлов в вашем массиве.
Если вы хотите просто использовать фиксированный набор имен, то вы можете сделать это:
public void CompareMyXMLFiles()
{
string[] files = { "ilk.xml", "migr.xml", "caa.xml" };
CompareXML(@"c:\markets", files);
}
public void CompareXML(string basePath, string[] xmlFileNames)
{
XmlDocument[] xmlDocuments = new XmlDocument[xmlFileNames.Length];
for(int i = 0; i < xmlFileNames.Length; i++)
{
xmlDocuments[i] = new XmlDocument();
xmlDocuments[i].Load(basePath + @"\" + xmlFileNames[i]);
}
//...do compare work here
}