Hi,
ich habe folgendes Problem:
In einer kleinen DX-2DEngine werden (logischerweise) die DirectX-Assemblies geladen. Normalerweise funktioniert das auch einwandfrei (Assemblies werden geladen, Code wird ausgeführt). Aber manchmal werden die Assemblies zu spät geladen (Code wird ausgeführt, Assemblies werden geladen) mit dem Resultat, dass das Programm abstürzt -> Der Code wird einfach nicht mehr weiter ausgeführt.
Ich gebe die DX-Assemblies in der IDE (VC# 2005 Express) als Referenzen an, also nicht dynamisch.
Ich hab einfach mal den Programmverlauf in der Konsole mitgeloggt.
So läuft das Programm richtig:
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ineDemo.exe', Symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ine.dll', Symbols loaded.
Starte Engineinitialisierung
Erstelle Fenster...
...Fertig
Erstelle Device...
...Fertig
Initialisiere Device...
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectInput\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll', No symbols loaded.
...Fertig
Engineinitialisierung Beendet
Erstelle Maus und Tastaturdevice...
...Fertig
Demo.Init()
Füge Gamescreen hinzu...
Hole Device...
...Fertig
Lade...
Hole Bildschirmgröße...
Erstelle Szene
Erstelle Item
Initialisiere Itemerstellung
Itemerstellung
Gameobjectconstruktor
Erstelle Sprite
Suche Textur: img\Paddelrechts.png
Textur nicht gefunden.
CreateTexture(img\Paddelrechts.png)
Lade Textur
Gebe geladene Textur zurück
[...Ladezeug...]
Erstelle GUI
Lade GUI Texte
Fertig
...Fertig
...Fertig
Zeige das Fenster...
...Fertig
Starte Programm...
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3DX\1.0.2911.0__31bf3856ad364e35\Microsoft.DirectX.Direct3DX.dll', No symbols loaded.
The thread '<No Name>' (0xacool has exited with code 0 (0x0).
The thread 0x1a8 has exited with code 0 (0x0).
...Fertig
The thread '<No Name>' (0xbacool has exited with code 0 (0x0).
The thread 0x77c has exited with code 0 (0x0).
The program '[3484] ArcanumEngineDemo.vshost.exe: Managed' has exited with code 0 (0x0).
So stürzt das Programm ab:
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ineDemo.exe', Symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'D:\Projekte\C#\Engine\ArcanumEngine\ArcanumEngineDemo\bin\Debug\ArcanumEng
ine.dll', Symbols loaded.
Starte Engineinitialisierung
Erstelle Fenster...
...Fertig
Erstelle Device...
...Fertig
Initialisiere Device...
...Fertig
Engineinitialisierung Beendet
Erstelle Maus und Tastaturdevice...
...Fertig
Demo.Init()
Füge Gamescreen hinzu...
Hole Device...
...Fertig
Lade...
Hole Bildschirmgröße...
Erstelle Szene
Erstelle Item
Initialisiere Itemerstellung
Itemerstellung
Gameobjectconstruktor
Erstelle Sprite
Suche Textur: img\Paddelrechts.png
Textur nicht gefunden.
CreateTexture(img\Paddelrechts.png)
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.DirectInput\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.DirectInput.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll', No symbols loaded.
'ArcanumEngineDemo.vshost.exe' (Managed): Loaded 'C:\WINDOWS\assembly\GAC_MSIL\Microsoft.VisualC\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualC.dll', No symbols loaded.
The program '[2584] ArcanumEngineDemo.vshost.exe: Managed' has exited with code 0 (0x0).
Wie man dort sieht werden beim ersten mal die notwendigen Assemblies schon bei der Deviceerstellung geladen, beim zweiten mal aber erst, wenn es ums Texturladen geht.
mfg
Bobba