Entwickler-Ecke
Multimedia / Grafik - Managed DirectSound - Absturz
ripmav - Fr 03.07.09 09:40
Titel: Managed DirectSound - Absturz
Hallo,
ich verwende Managed DirectSound. Wenn ich die Anwendung auf PCs starte, auf denen nicht das neueste DirectX installiert ist, stürzt die Anwendung einfach ab.
Ausschlaggebend ist diese Zeile:
C#-Quelltext
1: 2: 3:
| using Microsoft.DirectX.DirectSound; ... Device m_Device = new Device(); |
Ich kann seltsamerweise auch keine Exception abfangen (alles in einen try Block gelegt und mit catch { ... } versucht abzufangen).
Gibt es eine Möglichkeit, einen Absturz zu vermeiden? z.B. vorher überprüfen, ob man ein Device Objekt erstellen kann?
MfG,
Max
Kha - Fr 03.07.09 13:55
Wahrscheinlich entsteht schon beim Kompilieren der Methode eine TypeLoadException. Du musst die Exception in der aufrufenden Methode abfangen (bzw. den Device-Teil in eine separate Methode kapseln, wenn das deine Main-Methode ist).
ripmav - Fr 03.07.09 15:06
Hallo,
ich habe das jetzt so gemacht, wie du gesagt hast.
Es tritt eine System.IO.FileNotFoundException auf: Die Datei Microsoft.DirectX.DirectSound.dll wurde nicht gefunden.
Kann ich diese DLL (und die Microsoft.DirectX.dll) eigentlich einfach mit ins Verzeichnis meiner EXE Datei legen, oder kann ich nur den Benutzer darauf aufmerksam machen, er soll sein DirectX updaten?
Und wieso tritt diese Exception in der übergeordneten Funktion auf???
Kha - Fr 03.07.09 15:13
ripmav hat folgendes geschrieben : |
Kann ich diese DLL (und die Microsoft.DirectX.dll) eigentlich einfach mit ins Verzeichnis meiner EXE Datei legen, oder kann ich nur den Benutzer darauf aufmerksam machen, er soll sein DirectX updaten? |
Keine Ahnung, ob es legal ist :mrgreen:, aber es scheint zu funktionieren:
http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/cd29246d-52be-4fbd-b226-5e69c0de2450
ripmav hat folgendes geschrieben : |
Und wieso tritt diese Exception in der übergeordneten Funktion auf??? |
Beim ersten Aufruf deiner Methode wird sie vom JIT-Compiler kompiliert. Dazu muss er erstmal Device kompilieren, was zu der Exception führt. Und in einer noch nicht fertig kompilierten Methode kann schlecht ein try-Block aktiv werden ;) .
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!