2014-10-22 73 views
3

調試在Visual Studio中的一些異步代碼,當我遇到一個奇怪的問題,因爲空: enter image description here實例化局部變量顯示調試檢查

正如你可以看到我有一個for循環,在一個IEnumerable 9個迭代實例化對象(可怕的命名我知道,不是我的DB ...) i在這種情況下是0,所以elementAt應該把第一項放在betaling變量。 出現這種情況正確,而這種代碼執行完美,但在調試器中它顯示爲空:

enter image description here

當我繼續調試,一切正常,betaling變量的多行代碼被使用,是正確保存到數據庫,所以它只是我的調試檢查器顯示對象爲空。當你在調試的時候,這是相當令人惱火的,因爲你看不到任何東西。 我懷疑這必須做一些與異步等待。在這個循環之前有多個數據庫等待。並且循環中betaling對象的保存也是一種等待方法。當我嘗試重現然而,在一個測試項目這種行爲,一切工作正常..

我知道你可以在異步方法其它威脅訪問屬性的問題,我打電話從VM這個代碼,但隨後爲什麼我可以檢查清單?我懷疑這是一個錯誤,如果不是這肯定是一個奇怪的'功能'能夠遵循的代碼行,但不能夠檢查一些屬性..

我測試了這個VIsual Studio 2012和2013,兩者都有相同的行爲。

+1

你能張貼小,但完整的代碼示例,我們可以看到這個問題? – svick 2014-10-23 01:20:21

+1

我也看到這個。我有VS 2013 Ultimate + Update 5 – Nayan 2015-08-31 07:07:42

+0

出於好奇,你在你的代碼中使用任何IL?大多數ORM使用IL,因此您不必親自編寫它,以便將其呈現在您的代碼庫中。我試圖縮小可能的原因,這篇文章可能是相同的問題,並且用戶也使用IL:http://stackoverflow.com/q/15116210/1085837 – 2015-08-31 14:06:51

回答

1

我看到這兩個VS 2015年更新3和VS 2017

作爲工作的時候,我發現,使用鼠標懸停/點擊「運行執行到這裏保存的實例值,其中,鍵盤加速器('Ctrl + Shift + F10')會將實例化的值清空。

VS mouse hover 'Run execution to here'

+0

您是否在任何地方使用IL?我的數據庫調用使用Dapper,它使用了大量的IL。我試圖縮小這個問題的範圍,所以我可以爲這個 – 2017-03-30 07:05:15

+0

做一個'官方'的支持電話,我沒有使用IL。 – ergohack 2017-03-30 18:38:42