0

UI 스레드에서 매번 MediaPlayer.Play()이 실행될 때 상당한 시간 동안 UI가 정지합니다. SongCollection을 시작하는 데 걸리는 시간에 대해서는 아무 것도 할 수 없다고 생각하지만 최소한 UI는 응답 성을 유지해야합니다. 다른 스레드에서 MediaPlayer.Play()을 실행하면 분명히 작동하지 않습니다.MediaPlayer.Play()가 UI를 고정시킵니다.

+0

관련 코드를 게시 할 수 있습니까? – deathismyfriend

답변

1

MediaPlayer는 Xna 네임 스페이스의 구성 요소입니다. 당신이 게임에서이 기능을 사용하는 경우 이러한 현상 동결을 방지하기 위해 GameLoop을 실행하는 가장 확실한 : 당신은 응용 프로그램이 구성 요소를 사용하는 경우 GameLoop

, 당신은 자신이 동작을 시뮬레이션 할 수 있습니다

public MainPage() 
    { InitializeComponent(); 
     // Timer to simulate the XNA Game Studio game loop (Microphone is from XNA Game Studio) 
     DispatcherTimer dt = new DispatcherTimer(); 
     dt.Interval = TimeSpan.FromMilliseconds(33); 
     dt.Tick += delegate { try { FrameworkDispatcher.Update(); } catch { } }; 
     dt.Start(); 
} 

(gameloop 외부에서 마이크를 실행하는 방법에 대한 전체 샘플보기 : msdn)

+0

그래서 나머지 프로젝트를 루프 안에 넣어야한다는 말입니까? – Stacksatty

+0

아니요. 루프는 게임 시나리오에서 사용됩니다. 귀하의 경우에는 오디오 구성 요소를 사용하는 페이지에 dispatcherTimer 만 추가하십시오. –

+0

그래, 시도했지만 불행히도 고정되지 않았습니다. – Stacksatty

관련 문제