hallo @ all,
ich hab folgendes Problem:
in dem Programm, welches ich weiterentwickeln soll, musste ich die Microsoft.DirectX.dll und die Microsoft.DiretX.DirectSound.dll einbinden, hab ich auch gemacht.
Jetzt ist das Probelm, dass bei jedem Start im DebugModus folgende Fehlermeldung in folgender Zeile auftritt:
siehe Anhang
so, nun weiß ich ja, dass dies eigentlich eine Microsoft Fehlermeldung ist und dachte mir, da such ich doch mal bei denen nach ner Lösung... Pustekuchen...
da bekam ich unter folgendem Link nur diese "Lösung":
Link: http://msdn2.microsoft.com/de-de/library/ms172219(VS.80).aspx
Lösung:
Untersuchen Sie die Stapelüberwachung für den Thread, der diesen MDA aktiviert hat. Der Thread versucht ungültigerweise, einen Aufruf in den verwalteten Code durchzuführen, während er die Sperre des Betriebssystemladeprogramms hält. Wahrscheinlich wird auf dem Stapel DllMain oder ein entsprechender Einstiegspunkt einer DLL angezeigt. Die Regeln des Betriebssystems schränken die gültigen Vorgänge nach Erreichen des Einstiegspunkt relativ stark ein. Diese Regeln schließen jede Ausführung von verwaltetem Code aus.
Schön, das ist ne Menge Text von Microsoft, sagt aber überhaupt nichts über das Problem und vorallem über dessen Lösung aus.
Daher wollte ich fragen, ob mir jemand mit der Problemlösung weiterhelfen kann.
Danke
Nachtrag:
Folgender Text steht noch oben in der Fehlermeldung drin:
Die DLL "C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll" unternimmt einen Versuch, innerhalb der Sperre für den OS-Loader eine verwaltete Ausführung durchzuführen. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.
RonnyW :evil:
so habe jetzt zwar viel im Forum gefunden, jedoch immer nur, dass man diese Exception ausblenden soll...
des weiteren habe ich aber auch gelesen, dass dies zwar die Exception unterdrückt, jedoch nicht behebt...
habe sie nun mal ausgeblendet und nun das...
siehe Anhang
und in der angegebenen Zeile steht folgendes:
void InitNotifications()
{
if (applicationBuffer == null)
{
throw new NullReferenceException();
}
//Create a Thread to monitor the notify events
if (NotifyThread == null)
{
NotifyThread = new Thread(new ThreadStart(WaitThread));
Capturing = true;
NotifyThread.Start();
//Create a notification event, for when sound stops playing
NotificationEvent = new AutoResetEvent(false);
}
for (int i = 0; i < NumberRecordNotification; i++)
{
PositionNotify[i].Offset = (NotifySize * i) + NotifySize - 1;
PositionNotify[i].EventNotifyHandle = NotificationEvent.Handle;
}
applicationNotify = new Notify(applicationBuffer);
//Tell DirectSound when to notify the app. The Notification will come in the front
//of signaled events that are handled in the notify thread.
applicationNotify.SetNotificationPositions(PositionNotify, NumberRecordNotification);
}
private void WaitThread()
{
while (Capturing)
{
NotificationEvent.WaitOne(Timeout.Infinite, true);
RecordCapturedData();
}
}
also um genau zu sein steht in der angegebenen Zeile
NotificationEvent.WaitOne(Timeout.Infinite, true);
RonnyW :evil:
Hallo RonnyW,
Bilder bitte anhängen, nicht verlinken.
herbivore
Hallo RonnyW,
[Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)
Du startest den Thread, bevor du dein NotificationEvent initalisiert hast ...
NotificationEvent = new AutoResetEvent(false);
// ...
NotifyThread.Start();
sollte Abhilfe schaffen ...
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
bedeutet das... das ich erst
NotificationEvent = new AutoResetEvent(false);
und dann erst
NotifyThread = new Thread(new ThreadStart(WaitThread));
Capturing = true;
NotifyThread.Start();
machen muss?
ehrlich gesagt hab ich das aus einem example von microsoft zu DirectSound und da steht das genau so drin, funzt bei denen komischer weise auch, nur bei mir nicht...
RonnyW :evil:
ok ich danke euch, es scheint momentan zu funktionieren 😁
danke
RonnyW :evil:
Genau.
Hast du einen Link zum Beispiel?
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
ich hab eigentlich jetzt nur die einze zeile verschoben, wie du es gesagt hast...
und dann gings schon
RonnyW :evil:
Original von RonnyW
ehrlich gesagt hab ich das aus einem example von microsoft zu DirectSound und da steht das genau so drin, funzt bei denen komischer weise auch, nur bei mir nicht... example (engl.) == Beispiel (deutsch) 8)
Den Link, wo ich das nachlesen kann 😉
So einfach wie möglich, aber nicht einfacher. [Albert Einstein]
take a look at
* baer-torsten.de
* codinghints
achso...
ehm... das war wo ich die DirectX-SDK runter geladen hab, da ist das mit drin...
wenn du die SDk installierst findest du dann unter
C:\Programme\Microsoft DirectX SDK (August 2007)\Samples\Managed\DirectSound\CaptureSound\CaptureSound_2005.sln
das fertige Programm von Microsoft
RonnyW :evil: