XPathDocument Threading Вопрос - PullRequest
1 голос
/ 08 апреля 2009

У меня есть веб-приложение, в котором я пытаюсь кэшировать XPathDocument .

XPathDocument создается следующим образом.

XPathDocument xdoc = новый XPathDocument (новый StringReader (ruleXml));

Затем я хочу просто кэшировать этот xdoc и извлекать его для каждого запроса.

А потом я планирую позвонить

XPathNavigator nav = xdoc.CreateNavigator ();

на каждую нить.

У меня вопрос, является ли это потокобезопасным или нет. Можете ли вы иметь несколько XPathNavigator классов в разных потоках с одинаковыми базовый XPathDocument ?

Если нет, я просто кеширую строку ruleXml и создаю новую XPathDocument в каждом потоке.

Просто интересно, что люди предлагают в таком сценарии, где я хочу кэшировать документ XML только для чтения, а затем выполнять разные запросы xpath для каждого потока.

1 Ответ

1 голос
/ 08 апреля 2009

Это должно быть безопасно, если документ доступен только для чтения. Вся цель отделения XPathNavigator от XmlDocument или XPathDocument состоит в том, чтобы иметь возможность выполнять несколько переходов одновременно для одного и того же документа.

...