調試在Visual Studio中的一些異步代碼,當我遇到一個奇怪的問題,因爲空: 實例化局部變量顯示調試檢查
正如你可以看到我有一個for循環,在一個IEnumerable 9個迭代實例化對象(可怕的命名我知道,不是我的DB ...) i
在這種情況下是0,所以elementAt應該把第一項放在betaling
變量。 出現這種情況正確,而這種代碼執行完美,但在調試器中它顯示爲空:
當我繼續調試,一切正常,betaling
變量的多行代碼被使用,是正確保存到數據庫,所以它只是我的調試檢查器顯示對象爲空。當你在調試的時候,這是相當令人惱火的,因爲你看不到任何東西。 我懷疑這必須做一些與異步等待。在這個循環之前有多個數據庫等待。並且循環中betaling
對象的保存也是一種等待方法。當我嘗試重現然而,在一個測試項目這種行爲,一切工作正常..
我知道你可以在異步方法其它威脅訪問屬性的問題,我打電話從VM這個代碼,但隨後爲什麼我可以檢查清單?我懷疑這是一個錯誤,如果不是這肯定是一個奇怪的'功能'能夠遵循的代碼行,但不能夠檢查一些屬性..
我測試了這個VIsual Studio 2012和2013,兩者都有相同的行爲。
你能張貼小,但完整的代碼示例,我們可以看到這個問題? – svick 2014-10-23 01:20:21
我也看到這個。我有VS 2013 Ultimate + Update 5 – Nayan 2015-08-31 07:07:42
出於好奇,你在你的代碼中使用任何IL?大多數ORM使用IL,因此您不必親自編寫它,以便將其呈現在您的代碼庫中。我試圖縮小可能的原因,這篇文章可能是相同的問題,並且用戶也使用IL:http://stackoverflow.com/q/15116210/1085837 – 2015-08-31 14:06:51