这个问题有点难以理解。我在尝试打开一个在Visual Studio 2008中的winforms项目(在winforms设计器中)中的表单时遇到了一个NullReferenceException异常。堆栈跟踪指向以下代码的第四行:
public static class Logger
{
public static void LogMethodEnter()
{
var frame = new StackFrame(1);
var method = frame.GetMethod();
Trace.TraceInformation("{0}.{1}.{2}()", method.DeclaringType.Namespace, method.DeclaringType.Name, method.Name);
Trace.Indent();
}
public static void LogMethodExit()
{
Trace.Unindent();
}
}
...意思是指带有左花括号的那一行。我在其他项目中也遇到了同样的问题(但不涉及winforms设计器),我认为这是一个线程相关的问题,但我没有代码来复制它。
为什么会发生这种情况,为什么异常堆栈跟踪指向带有花括号的行?
澄清:空引用异常只发生在winforms设计器中。当应用程序运行时,它不会抛出该错误。