Visual Studio在单个文件中崩溃静态构造函数... [VS2010]

时间:2014-12-09 00:07:55

标签: visual-studio-2010 visual-studio crash

我有一个文件Mineral.cs,每当我尝试用静态构造函数Visual Studio崩溃替换方法InitializeMinerals()时。重新启动后,每次重复出现这种情况。什么?!

事件日志中的错误报告:

事件1000,应用程序错误:

Faulting application name: devenv.exe, version: 10.0.30319.1, time stamp: 0x4ba1fab3
Faulting module name: cslangsvc.dll, version: 10.0.30319.1, time stamp: 0x4ba20c61
Exception code: 0xc0000005
Fault offset: 0x0024b651
Faulting process id: 0x1904
Faulting application start time: 0x01d012904f2726d1
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
Faulting module path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC#\VCSPackages\cslangsvc.dll
Report Id: f146768b-7f33-11e4-80e9-083e8e5a419a

事件1001,Windows错误报告:

Fault bucket , type 0
Event Name: APPCRASH
Response: Not available
Cab Id: 0

Problem signature:
P1: devenv.exe
P2: 10.0.30319.1
P3: 4ba1fab3
P4: cslangsvc.dll
P5: 10.0.30319.1
P6: 4ba20c61
P7: c0000005
P8: 0024b651
P9: 
P10: 

Attached files:
C:\Users\CLASSIFIED\AppData\Local\debuggee.mdmp

These files may be available here:
C:\Users\CLASSIFIED\AppData\Local\Microsoft\Windows\WER\ReportArchive\AppCrash_devenv.exe_df1fb0912a591be97726252b29e971ef71bcbe74_0737cf24

Analysis symbol: 
Rechecking for solution: 0
Report Id: f146768b-7f33-11e4-80e9-083e8e5a419a
Report Status: 0

文件中的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XXXXXXXX.XXXXXXXXXX.Content.Items
{
    public class Mineral
    {


        public static void InitalizeMinerals()
        {

        }



        public Mineral(bool gem, string name, string[] subtypes = default(string[]))
        {
            this.IsGem = gem;
            this.Subtypes = subtypes;
            this.Name = name;
        }

        public bool IsGem
        {
            get;
            private set;
        }

        public string[] Subtypes
        {
            get;
            private set;
        }

        public string Name
        {
            get;
            private set;
        }



   }
}

1 个答案:

答案 0 :(得分:0)

首先,在C#中,您不能在静态构造函数上拥有访问修饰符。

其次,关于静态构造函数的一些信息。它们用于初始化类的静态数据,直到需要类之前才调用它们。因此,第一次实例化Mineral类是在调用静态构造函数时。有关详细信息,请访问此站点: http://msdn.microsoft.com/en-us/library/k9x6w0hc.aspx

第三,如果要在XXX_Load方法或构造函数中的Windows窗体对象中创建Mineral类的实例,则将调用Mineral静态构造函数。静态构造函数可以与您的设计师一起玩快乐滚刀(并导致它与奇怪的错误一起崩溃)。如果您不必在表单创建/加载时实例化Mineral类,请不要。您可以通过简单地注释掉在表单中创建/依赖Mineral类的代码然后再次尝试设计器来测试是否是这种情况。如果没有异常,那么当设计者试图加载类时,Mineral类的静态构造函数可能会抛出异常。这种错误通常只影响设计师,程序可以完美运行。

相关问题