2012-10-15 60 views
0

我有一個Form具有類似下面的代碼:成員變量在MessageBox之後被重新初始化?

public partial class Form1 : Form 
{ 
    private int m_var1; 
    private int m_var2; 
    string sMsg; 
    bool bReturn; 

    private bool MyFunction() 
    { 
     // POINT A: at this point m_var1 and m_var2 are both 100    
     sMsg = "Test Message"; 
     bReturn = (DialogResult.Yes == MessageBox.Show(sMsg, "MyApp",MessageBoxButtons.YesNo, MessageBoxIcon.Question)); 
     // POINT B: at this point m_var1 and m_var2 are both 0 
    } 
} 

爲什麼在POINT Bm_var1m_var2,因爲我經歷都改爲0

+11

請提供一個小型但完整的示例項目來重現此問題。這不是正常的行爲,你的問題沒有包含足夠的信息來回答。 –

+1

變量的值是否受到另一個線程的影響? – waldrumpus

+0

請給出您將代碼分配給m_var1和m_var2或添加全功能代碼(MyFunction) – andy

回答

2

這聽起來像是一個線程問題。我可以解釋我將如何解決此問題:

  • 將m_var1和m_var2更改爲屬性。
  • 爲其設置者設置一個斷點。

檢查命中setter的代碼的堆棧跟蹤。

+0

在visual studio中,您可以讓任何符號被分配一個值時停止調試器。也就是說,當m_var1被分配時,您可以設置一個斷點,所以您在技術上不需要將它們更改爲屬性 –

+0

@RuneFS:您如何做到這一點? – CJ7

+0

@ CJ7抱歉不會幫助您,因爲它不適用於託管代碼,至少不是根據 http://stackoverflow.com/questions/160045/visual-studio-debugger-break-when-a-value-更改 –