2012-10-15 49 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-更改 –