Я получаю исключение переполнения стека для сегмента кода, который, кажется, не быть в состоянии произвести StackOverflow ... Это выглядит следующим образом:Может ли переполнение стека происходить по любой другой причине, которая рекурсивно?
public String WriteToFile(XmlDocument pDoc, String pPath)
{
string source = "";
string seq = "";
string sourcenet = "";
XmlNodelist sourceNode = pDoc.GetElementsByTagName(XmlUtils.Nodes.Source);
source = sourceNode.Item(0).InnerText;
XmlNodelist sqList= pDoc.GetElementsByTagName(XmlUtils.Nodes.Seq);
seq = sqList.Item(0).InnerText;
XmlNodelist sourceNets = pDoc.GetElementsByTagName(XmlUtils.Nodes.SourceNets);
sourcenet = sourceNets.Item(0).InnerText;
string fileName = Folders.GetMyFileName(source, seq, sourcenet);
string fullPath = Path.Combine(pPath, fileName);
pDoc.Save(pFullPathFile); <--- Stackoverflow is raised here
return pFullPathFile;
}
Там нет рекурсивных вызовов, если вы рассмотрите стек вызовов, на котором он имеет глубину 2, прежде чем перейти к «внешнему коду» (который, как я предполагаю, не является внешним, а частью фреймворка, который запускает поток, отключение которого отключается).
¿В любом случае исключение может быть поднято из-за чего-либо иного, кроме рекурсивного вызова? Он ВСЕГДА терпит неудачу в вызове метода pDoc.Save ... и pDoc на самом деле не такой большой ... больше как 32 Кбайт данных ...
Вы можете отправить реальный код? Я не вижу, откуда в этом коде появляется pFullPathFile. – Joe