2017-05-29 41 views
3

假設我們有示例代碼(VS2015,的WinForms,淨4.6.1):不正確的值,而在Visual Studio調試2015年

List<int> items = new List<int>(); 
private async Task test(int id) 
{ 
    id = 1; 
    int id_real = id; 

    int index = items.FindIndex(x => x == id); 
} 

private async void button1_Click(object sender, EventArgs e) 
{ 
    await test(0); 
} 

現在的 「功能」: enter image description here

這是怎麼回事可能?有趣的部分 - 它只是Visual Studio觀察者問題,運行時結果仍然正確。

現在我知道它只發生在VS2015,並導致這種行爲 - 測試方法中的最後一個字符串。

+0

它的工作好,我在VS2017 ...你有嘗試過嗎?如果你看看當地人窗口而不是觀看會發生什麼? –

+0

@JonSkeet,是的,我也試過VS2013和VS2017 - 沒有問題。本地窗口顯示與手錶相同的結果。 –

回答

2

請在TOOLS-> Options-> Debugging下啓用「使用託管兼容模式」,然後重新調試您的應用程序,我想您可以在VS2013或VS2017的調試器窗口中獲得正確的結果。

enter image description here

更新時間:

我還報告這個問題成爲連接報告,即使我們能解決這個問題:

https://connect.microsoft.com/VisualStudio/feedbackdetail/view/3135000/incorrect-value-while-debugging-in-visual-studio-2015

+0

是的,這解決了這個問題。但我只是很好奇,爲什麼VS2013和VS2017工作正常,但沒有啓用此選項? –

+0

@Alek Depler,很高興知道它解決了這個問題,我知道如果我們在VS2015中進行調試,並且我們已經使用早期的調試引擎構建了應用程序,那麼可以選擇這個選項。所以如果我們啓用那個會強制使用較舊調試引擎的選項。但我也同意你的看法,即使我們找到解決此問題的解決方法,它也會是VS2015的反饋。 –

+0

@Alek Depler,我幫你把這個問題報告給產品團隊。當然,如果回覆對你有幫助,請將其標記爲答案。對於該反饋,您可以添加您的評論併爲其投票。 –