Přehrávání hudby pomocí DirectX   zodpovězená otázka

VB.NET

Microsoft.DirectX.AudioVideoPlayback.Audio.FromFile(file).Play()

Zdravím,

mám tento kód který má přehrát soubor file (100% existuje), ale po spuštění Debuggeru mi to vyhodí tohle:

"

LoaderLock was detected

DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX\1.0.2902.031bf3856ad364e35\Microsoft.DirectX.dll' is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.

"Nevíte prosím, kde může být problém? Už jsem tento kód ve stejném tvaru několikrát používal a nikdy s tím probém nebyl, tak nevím.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Zdravím, to je známý problém LoaderLocku - neptejte se mne co to znamená, ale vím, že jsem to již jednou řešil. Momentálně Vám sice řešení nenapíšu, protože o prográmek, ve kterém jsem to měl řešeno, jsem kdysi přišel, ale ve svém projektu se právě dostávám do fáze, kdy budu taky hudbu řešit, tak se tomu budu zase věnovat a pokud někdo nebude rychlejší, napíšu Vám řešení (pokud si ale matně vzpomínám, vyřešilo to přidání nejaké reference do projektu) - tenkrát se mi to podařilo vyřešit několikadenním studováním různých fór, kde pod heslem "loader lock" najdete dost širokou diskusi.

Jinak počítám, že se k tomu dostanu možná dnes večer, nebo zítra.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dobře, já zatím prostuduji internet, případně budu vděčný, když mi napíšete jak to vyřešíte.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak jsem tu zase a mám problém - když jsem se do toho pustil, fungovalo mi to. A zaboha si nemohu vzpomenout, co jsem tenkrát dávno dělal za chybu.

Jediné na co Vás mohu upozornit, ať si zkontrolujete, že máte v referencích natažené nejenom Microsoft.DirectX.AudioVideoPlayback, ale též Microsoft.DirectX, protože když to tam není, tak to háže Vámi popisovanou chybu.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Mě to nejde ani když jsem importoval DirectX, stále stejný problém, ale po důkldaném studiu MSDN a internetu jsem zjistil, že j tom má svou úlohu také verze Visual Studia ( já totiž minulý projekt dělal na VS2005 a stále ho mám, ale když ho zkopíruji do 2008ky tak nastane ta chyba)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Tak to Vám, bohužel, nepomohu, já totiž zůstávám u 2005. Jediné co mě tak ještě napadá, zkuste rozdělit deklaraci a iniciaci (kdysi mi to taky podobný problém pomohlo vyřešit - bylo to v čemsi podobném, ale taky už je to hodně zpátky). Ale jak jsem napsal, nemám tušení, jak se 2008-čka chová a ani to nemohu tím pádem vyzkoušet.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Problém je v tom, že při deklaraci třídy audio musím zadat FileName a už v tomto řádku mi to hodí chybu. No nic, i tak Vám děkuji.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Taky jsem se s tím už jednou setkal a kupodivu stačilo ve Visual Studiu v nějakém menu (Debug, Tools ? nevím) najít položku Exceptions a zakázat její vyvolávání. Pak to fungovalo. Anebo je to nesprávnou verzí nějaké knihovy DirectXu, to se taky občas stává.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Já jsem to v tom dialogu také nastavil (CTRL + ALT + E), ale po debugu se mi vyhodila jiná Exception: Application error. Tak nevím, jestli to byla změna k lepšímu :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ona se sice samotná deklarace a iniciace dá rozhodit, aniž byste potřeboval už při té deklaraci znát jméno souboru, a to je taky to na co jsem narážel, když jsem říkal, že mi to kdysi taky pomohlo, ale máte pravdu, že tady to bude asi jiný případ a tady to asi nepomůže. Jinak:

private withevents audio as microsoft.directx.audiovideoplayback.audio

...
...
...
audio=new microsoft.directx.audiovideoplayback.audio(soubor)
audio.play()
...

pokud si vzpomínám, toto mi kdysi v něčem podobném pomohlo, ale píšu to jen pro úplnost - jak jsem psal už výše, asi to není Váš případ.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback