Đây là loại bí truyền. Tôi chạy vào một NullReferenceException khi cố gắng mở một hình thức (trong thiết kế winforms) trong một dự án winforms trong visual studio 2008. Những điểm stack trace đến dòng thứ tư của đoạn mã sau:Tại sao '{' ném một NullReferenceException trong một phương thức tĩnh?
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();
}
}
... ý nghĩa dòng với dấu ngoặc nhọn mở. Tôi đã chạy vào cùng một vấn đề (nhưng không liên quan đến các nhà thiết kế winforms) trên các dự án khác, và tôi nghĩ rằng đó là một vấn đề liên quan đến luồng, nhưng tôi không có mã để tái tạo nó.
Tại sao điều này xảy ra và tại sao dấu vết ngăn xếp ngoại lệ trỏ vào đường thẳng bằng dấu ngoặc nhọn?
Làm rõ: Ngoại lệ tham chiếu null chỉ xảy ra trong trình thiết kế winforms. Khi ứng dụng được chạy, nó không ném lỗi đó.
Các bạn đã thử nhìn vào tháo gỡ? Bạn có thể thấy những gì nó đang làm ở đó (mặc dù tôi đã không có nhiều thành công để nhận các biểu tượng để làm việc trong chế độ xem tháo gỡ). Ngoài ra còn có khả năng mỏng mà bạn đang chạy mã không khớp với nguồn của bạn. – Rup
Bạn đã thử làm sạch giải pháp và xây dựng lại? – FrustratedWithFormsDesigner
@Rup: Đồng ý về mã VS đang phàn nàn về việc không đồng bộ với tệp - nó có thể đang hoạt động với nội dung được lưu trong bộ nhớ cache? – FrustratedWithFormsDesigner