我有以下代码。有谁能告诉我ut,c2实例会发生什么?他们会在没有被垃圾收集很长时间的情况下闲逛吗?我问的原因是,在我关闭所有窗口,包括执行此代码的窗口后,Visual Studio调试器仍处于打开状态(我在调试模式下运行它)。 如果我没有在Class2中的Initializer()方法中引发异常,则关闭所有窗口后调试器将关闭。
以下是代码
namespace Test
{
public class Class1
{
private ICommand testCommand;
public ICommand TestCommand
{
get
{
return updCommand ?? (updCommand = new DelegateCommand(() =>
{
int nStatus = 0;
Class2 c2 = new Class2();
nStatus = c2.InitStatus;
if (nStatus == 0)
{
c2.doSth()
}
System.Windows.MessageBox.Show("Return status = " + nStatus.ToString());
c2 = null;
}
));
}
}
}
public class Class2
{
Utilities ut = new Utilities();
public int InitStatus { get; set; }
public Dbupdate()
{
Initializer();
}
private void Initializer()
{
try
{
throw new Exception("just test");
}
catch (Exception ex) { ErrHandler("Initializer(): " + ex.Message); InitStatus = -100; }
}
private void doSth()
{
ut.doWhateve();
}
}
}
答案 0 :(得分:0)
想出来。我实例化了一个窗口,但在抛出异常之前没有关闭。