2013-05-06 2 views
-5

어떤 이유로이 "System.NullReferenceException : 개체 참조가 개체의 인스턴스로 설정되어 있지 않습니다"오류가 발생합니다. 무엇이 이것을 일으킬 수 있습니까?C# System.NullReferenceException

public class Font 
{ 
    private PrivateFontCollection MyFonts = new PrivateFontCollection(); 
    public Font() 
    { 
     string resource = "zig_____"; 
     Stream fontStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource); 
     System.IntPtr data = Marshal.AllocCoTaskMem((int)fontStream.Length);//this is the line that causes the error 
     byte[] fontdata = new byte[fontStream.Length]; 
     fontStream.Read(fontdata, 0, (int)fontStream.Length); 
     Marshal.Copy(fontdata, 0, data, (int)fontStream.Length); 
     MyFonts.AddMemoryFont(data, (int)fontStream.Length); 
     fontStream.Close(); 
     Marshal.FreeCoTaskMem(data); 
    } 
} 
+4

예외는 어떤 행에서 발생합니까? –

+0

'Stream'이 null이라고 추측 할 수 있습니다. 유일한 가능성이있는 것 같습니다. –

+0

죄송합니다. 죄송합니다. 라인을 표시하는 것을 잊어 버렸습니다. – user2288056

답변

2

글꼴 스트림을 제대로로드하지 않는 것 같습니다. 올바른 리소스 경로를 사용했는지 그리고 리소스가 실제로 있는지 확인하십시오. 올바른 경로가 확실하지 않은 경우 GetManifestResourceNames() 메서드를 호출하여 명명 된 리소스가 어셈블리에 있는지 확인할 수 있습니다.

그리고 이것을 교훈으로 삼으십시오. 항상 자원을 올바르게로드했는지 확인하십시오. 그것이 있어야한다면, 런타임 버그로 프로그램을 처리하는 대신 정상적으로 처리 할 수 ​​있습니다.

+0

당신은 신사와 학자입니다. – user2288056

관련 문제