Ошибка StreamReader - PullRequest
       3

Ошибка StreamReader

1 голос
/ 27 февраля 2010

если я поставлю отладчик из первой строки этого кода и сделаю шаг, я ничего не получу событие после линии

    xmlData = reader.ReadToEnd(); 

но если у меня есть отладчик в последней строке этого кода ... где закрывается скобка, я получаю все. я не знаю, если это только дебагер, ведущий себя сумасшедшим, или реальная вещь

using (StreamReader reader = new StreamReader(context.Request.InputStream))
{
    xmlData = reader.ReadToEnd();
}

Может кто-нибудь сказать мне, что происходит. потому что иногда я не могу получить данные из потокового ридера, даже если данные отправлены правильно.

Спасибо

Ответы [ 2 ]

5 голосов
/ 27 февраля 2010

Считыватель не будет выполнять фактическое «чтение», пока не будет вызван метод ReadToEnd. Что ты пытаешься сделать?

1 голос
/ 27 февраля 2010

Если вы поместите точку останова в строку, разрыв произойдет до того, как эта строка будет выполнена, поэтому неудивительно, что вы не получите никаких данных.

Но я подозреваю, что вы имеете в виду, что вы устанавливаете точку останова и затем медленно просматриваете код, пока не достигнете конца, а затем проверите содержимое переменной и обнаружите, что они пусты.

  • Одной из причин может быть проблема синхронизации. Возможно, у службы, с которой вы читаете, истекло время ожидания .
  • Другой причиной может быть условие гонки в вашем коде.
  • Еще одна неожиданная вещь, которая может поразить людей, - это то, что часы могут вызывать побочные эффекты , а пошаговое выполнение кода вызывает переоценку часов. Это может изменить состояние вашей программы в зависимости от того, где вы поставили точку останова. Следует соблюдать осторожность, чтобы не настроить часы для свойства, которое имеет побочный эффект при оценке.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...