2010-01-25 2 views
1

디버깅 중에는 웨이브가 재생되지 않습니다. CTRL + F5를 누르면 멋진 WAV가 나오고 Console은 파일 커서 위치 (buf.PlayPosition)를 기록한 다음 사운드가 끝나면 종료합니다. (필자가 F5를 누르면) 오디오 출력은 없지만 콘솔 커서에서 파일 커서 위치가 여전히 증가하고 메서드가 예외없이 종료됩니다.디버그 조건에서 DirectSound 버퍼가 재생되지 않는 이유는 무엇입니까?

using Microsoft.DirectX.DirectSound; 

public void Play() 
    { 
     var fileName = "bass.wav"; 
     using (var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read)) 
     {  
      using (var dev = new Device()) 
      { 
       dev.SetCooperativeLevel(this, CooperativeLevel.Priority); 
       using (Buffer buf = new Buffer(stream, dev)) 
       { 
        buf.Volume = 0; 
        buf.Play(0, BufferPlayFlags.Default); 
        while (buf.Status.Playing) 
        { 
         System.Console.WriteLine("playing " + buf.PlayPosition); 
        } 
       } 
      } 
     } 
    } 

아이디어가 있으십니까?

답변

0

Visual Studio 호스팅 프로세스를 사용하지 않도록 설정했는데 문제가 해결 된 것 같습니다.

2

어쩌면 BufferDescription을 사용하여 버퍼에 "Global Focus"를 지정해야 할 수도 있습니다. 는 C++ 문서에서 :.

"는 예에서 DSBCAPS_GLOBALFOCUS 플래그는 응용 프로그램 창은 포 그라운드에 있지 않을 때 버퍼가 버퍼가 음소거됩니다,이 플래그가 없으면에도 계속 재생됩니다 보장 다른 응용 프로그램이나 심지어 대화 상자에 입력 포커스가있을 때. "

public SecondaryBuffer(Stream, BufferDescription, Device); 형식의 생성자를 사용해보세요.

+0

버퍼를 사용하는 것보다 SecondaryBuffer를 사용하면 어떤 이점이 있습니까? – gingerbreadboy