2010-02-26 56 views
1

如果我把一个debuger从开始这个代码,并一步一个线贯穿我没有得到任何 事件行StreamReader的问题

xmlData = reader.ReadToEnd(); 

后,但如果我对这个代码的最后一行调试..大括号关闭的地方,我得到了一切。我不知道这是否只是debuger作用疯了,还是一个真实的东西

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

谁能告诉我怎么回事。因为有时我无法从流读取器获取任何数据,即使数据发送正确。

感谢

回答

5

读者是不会执行实际的“读”,直到ReadToEnd的方法被调用。你想做什么?

+0

+1。打败我吧。我应该输入较少。 ;-) – David 2010-02-26 22:05:28

+0

那不是它是如何工作的。我一步一步通过它..它没有得到任何数据后ReadToEnd()..即使我知道肯定数据已发送.. 它只是基本的httphandler捕获请求做了什么与数据和回应一些数据 – devforall 2010-02-26 22:16:13

+1

小心超时。当您调试时,他们可能会绊倒。 – 2010-02-26 22:21:04

1

如果你在一条线上放置了一个断点,那么在该线被执行之前发生了断点,所以你没有得到任何数据也就不足为奇了。

但我怀疑你的意思是你放置一个断点,然后慢慢地遍历代码,直到你到达最后,然后检查变量的内容并发现它们是空的。

  • 一个原因可能是计时问题。这可能是您正在阅读的服务有超时
  • 另一个原因可能是代码中的竞争条件
  • 另一个意想不到的事情,可以赶上人是手表可能会导致副作用并逐步通过代码导致手表重新评估。这可以根据您放置断点的位置来更改程序的状态。您应该小心,不要在评估时对属性产生副作用的手表。