Выключение одной только отладки не должно иметь значения вообще. Но как только Вы выключаете отладку и включаете оптимизацию, необходимо видеть различие, поскольку это делает некоторую статическую оптимизацию во время компиляции. Этот путь даже Ваш оптимизированный код горячей точки становится быстрее во времени выполнения.
, Но до сих пор, компромисс между получением значения полных отслеживаний стека или наличия еще некоторой пользовательской производительности, я всегда голосовал за отслеживания стека. В конце концов, пользователи готовы потратить 1 000$ каждый год для получения более быстрой машины, но не готовы провести 15 минут, чтобы дать Вам значимые сообщения об ошибках Вам для решения их проблем.
После лет, я более готов оценить свои 15 минут выше, чем 1 000$ пользователя.:)
Вместо того, чтобы создавать XmlValidatingReader
класс напрямую, необходимо создать соответствующий объект XmlReaderSettings
и передать его в качестве аргумента в XmlReader.Create
метод :
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD };
settings.ValidationEventHandler += new ValidationEventHandler(OnValidationEvent);
var reader = XmlReader.Create("file.xml", settings);
Остальное без изменений.
PS OnValidationEvent
- это имя метода, который вы объявляете для обработки событий проверки. Очевидно, вы можете удалить эту строку, если не хотите подписываться на события проверки, вызываемые XmlReader
.
var messages = new StringBuilder();
var settings = new XmlReaderSettings { ValidationType = ValidationType.DTD };
settings.ValidationEventHandler += (sender, args) => messages.AppendLine(args.Message);
var reader = XmlReader.Create("file.xml", settings);
if (messages.Length > 0)
{
// Log Validation Errors
// Throw Exception
// Etc.
}