Avatar billede thomaxz Nybegynder
13. november 2006 - 10:30 Der er 6 kommentarer og
1 løsning

c# og Exception System.TypeInitializationException was thrown in

Jeg får Exception System.TypeInitializationException was thrown in debuggee: og efterfølgen bliver den gul på flg. linje

Set.pic=new PicArray(this);

hvilket er underlig da det har virket.

Set er en klasse der inhode forksellige settinge, mens PicArray er en klasser der holder styr på et array af Picturebokse.
en tilpasset version af http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchCreatingControlArraysInVisualBasicNETVisualCNET.asp

hele fejlmeddelsen

Exception System.TypeInitializationException was thrown in debuggee:
The type initializer for 'Fly3.PicArray' threw an exception.

loadpic() - c:\Documents and Settings\Thomas\Dokumenter\SharpDevelop Projects\Fly3\MainForm.cs:45,4
MainFormLoad() - c:\Documents and Settings\Thomas\Dokumenter\SharpDevelop Projects\Fly3\MainForm.cs:86,4
OnLoad()
OnCreateControl()
CreateControl()
CreateControl()
WmShowWindow()
WndProc()
WndProc()
WndProc()
WmShowWindow()
WndProc()
OnMessage()
WndProc()
DebuggableCallback()
SetVisibleCore()
SetVisibleCore()
set_Visible()
RunMessageLoopInner()
RunMessageLoop()
Run()
Main() - c:\Documents and Settings\Thomas\Dokumenter\SharpDevelop Projects\Fly3\MainForm.cs:27,4

har goså prøvet at flytte, picvaribale over i mainformen, men den siger det samme.
Avatar billede md_craig Nybegynder
13. november 2006 - 10:43 #1
Har du en klasse hvor du har noget statisk initialization?...

Statisk Constructor fx... det er hvertfald der jeg får den form for fejl... men debuggeren finder ikke altid (Sjældent) tilbage der til...

Her kan det så være hvilken som helst exception...
Avatar billede thomaxz Nybegynder
13. november 2006 - 10:54 #2
Min pic variable er ligenu ærklære i min set klasse

med         public static PicArray pic;

har lige prøvet at fjerne static og sætte den i mainforme, men med samme resultat.
Avatar billede md_craig Nybegynder
13. november 2006 - 11:48 #3
Og det er det eneste Statiske du har i din kode?... for bare fordi din fejl ifl. exceptionen oprinder der, er det ikke sikkert... har selv stået med noget hvor det var en single ton 3 lag nede der faktisk kastede en NullReferenceException, stadig var sidste trace for min debugger et sted i en ikke direkte relaterende klasse...

Fejlen indikere jo også at det er en "TypeInitialisering" der går galt, dermed en klasse som ikke initialiseres ordenligt...
Avatar billede thomaxz Nybegynder
13. november 2006 - 12:00 #4
Hvis du med statisk mener Static er der en del i min set klasse.

namespace Fly3
{
    /// <summary>
    /// Description of Set.
    /// </summary>
    public class Set
    {
        public static PicArray pic;
        public static int beat;
        public static System.Drawing.Image img=System.Drawing.Image.FromFile("Housefly2g.gif");
        public struct flyeStruct
        {
            public int top;
            public int left;
            public int width;
            public int height;
            public bool dead;   
            public int my;
            public int mx;
        }
        public static flyeStruct[] flye;
       
    }
}

og en funktion i Mainform

    public static void Main(string[] args)
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new MainForm());
        }

og det eneste steder der ernogme static ærklæring.
Avatar billede md_craig Nybegynder
13. november 2006 - 12:26 #5
public static flyeStruct[] flye; <<

Bruger du den noget sted uden at initializere den?...
Ellers er din PicArray naturligvis også en god kandidat...

Og endelig, dit billede... (Kunne vel finde på at kaste en Exception hvis billedet ikke kan findes??)

i stedet for at initialisere de ting direkte kan du evt. via en Static constructor gøre det, den bliver udført på samme vis...

namespace Fly3
{
    /// <summary>
    /// Description of Set.
    /// </summary>
    public class Set
    {
        public static PicArray pic;
        public static int beat;
        public static System.Drawing.Image img=System.Drawing.Image.FromFile("Housefly2g.gif");
        public static flyeStruct[] flye;

        static Set()
        {
          try
          {
          img = System.Drawing.Image.FromFile("Housefly2g.gif");
            pic = new PicArray(); //????, hvis den ikke blive initialiseret andet steds...
            flye = new flyeStruct[10]; //Dimentioner, hvis den ikke blive initialiseret andet steds...
          }
          catch (Exception ex)
          {
            //Gør et eller andet meningsfuldt med din exception, pak den evt. ind i en anden exception,
            // hvor du kan skrive at din exception fandt sted her, til Debug kan du naturligvis bare lige printe den ud et sted...
          }
        }

        public struct flyeStruct
        {
            public int top;
            public int left;
            public int width;
            public int height;
            public bool dead;   
            public int my;
            public int mx;
        }
       
    }
}
Avatar billede thomaxz Nybegynder
13. november 2006 - 13:13 #6
Jep, tak, det var bileldet der var årsagen, jeg have lfytte bilelde for at få lidt bedre struktur i de eneldige version af programmet men havede glemt at ændre stien, både pic og flye intilaiser andet sted så det var ikke det der var probelmemt, tak for hjælpen.

læg et svar for point.
Avatar billede md_craig Nybegynder
13. november 2006 - 17:30 #7
np
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester