在visual studio中调试一些异步代码时遇到一个奇怪的问题:
正如你所看到的,我有一个for循环遍历一个IEnumerable,其中包含9个实例化对象(糟糕的命名,我知道,不是我的数据库...)
在这种情况下,i
为0,因此elementAt应将第一项放在betaling
变量中。
这种情况正确发生,并且此代码执行完美,但在调试器中它显示为null:
当我继续调试时,一切正常,betaling
变量用于多行代码并正确保存到DB中,因此只有我的调试检查器才将对象显示为null。然而,当你调试时,这是非常恼人的,因为你看不到任何东西..
我怀疑这必须与异步等待做一些事情。在此循环之前有多个DB等待。并且循环中betaling
对象的保存也是一种等待方法。当我尝试在测试项目中重现此行为时,一切正常..
我知道在异步方法中访问其他威胁的属性时可能会遇到问题,我从VM调用此代码,但为什么我可以检查列表?我怀疑这是一个错误,如果它不是它肯定是一个奇怪的“功能”能够遵循代码行,但无法检查一些属性..
我在VIsual Studio 2012和2013中对此进行了测试,两者都有相同的行为。