Autor Beitrag
ripmav
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: Fr 03.07.09 09:40 
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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 03.07.09 15:13 
user profile iconripmav hat folgendes geschrieben Zum zitierten Posting springen:
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: social.msdn.microsof...bd-b226-5e69c0de2450

user profile iconripmav hat folgendes geschrieben Zum zitierten Posting springen:
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 ;) .

_________________
>λ=