Я работаю над службой, которая периодически выполняет сканирование в определенной папке для сбора информации о некоторых файлах, находящихся в ней и ее подпапках.Служба зависает при вызове XDocument.Root.Add (XElement)
Я протестировал код в консольном приложении, и он работает как ожидалось, однако, когда он запускается из моей службы, выполнение, похоже, застревает в той части, где он вызывает scanLog.Root.Add (temp);
Я вижу запись о событиях, в которой говорится: «Начать добавление узла», однако никогда не доходит до «Готового добавления узла», какие-либо мысли о том, почему это не работает в моей службе, но отлично работает в консольном приложении?
private void ScanForChildCopies(string dir)
{
foreach(var dirs in Directory.GetDirectories(dir))
{
ScanForChildCopies(dirs);
}
foreach(var files in Directory.GetFiles(dir, "*.ac"))
{
FileInfo fInfo = new FileInfo(files);
serviceLogging.WriteEntry("Found File: " + files);
if (fInfo.Exists)
{
if ((DateTime.Now - fInfo.LastWriteTime).Days > 0)
{
serviceLogging.WriteEntry("Building node");
XElement temp = new XElement("childfile", new XElement("name", fInfo.Name), new XElement("lastmodified", fInfo.LastWriteTime.ToShortDateString()),
new XElement("age", (DateTime.Now - fInfo.LastWriteTime).Days.ToString()));
serviceLogging.WriteEntry("Starting to add node");
scanLog.Root.Add(temp);
serviceLogging.WriteEntry("finished Adding node to scanlog");
}
}
}
}
Он зависает при попытке добавить XElement (temp) в существующий XDocument, поэтому на данном этапе не происходит запись в фактический файл, он должен просто создавать xml в памяти и добавлять его к объекту XDocument. – Vladmere
Когда вы говорите услугу, вы имеете в виду веб-службу, размещенную в IIS или услуге Windows ... – MrPink13
@Umair Farooq Я знаю, что IIS сбросит пул приложений, если вы что-нибудь напишите в сопоставленной папке ... Я просто ссылался на то, что это может происходить в случае с Vladmere ... – MrPink13