한 Silverlight Page 내에서 정상작동하는 MediaElement의 개수는 123개다.

Silverlight/Experiment 2008.03.16 01:56

리듬잇 같은 BMS류의 게임을 Silverlight로 제작하다가 발견한 문제입니다.
예를 들어 어떤 곡에서 270여 개의 음원을 사용하는 이유로,
이 음원에 대한 MediaElement를 미리 270개 생성해 놓고 사용하고자 하였습니다.
그 곡을 재생시켜보자 군데군데 연주되지 않는 음이 발견되었습니다.

왜그런가 테스트를 해보다가 123번째 MediaElement 이후에 생성된
MediaElement들은 Play() 메서드가 제대로 작동하지 않는 것을
발견하였습니다.

시뮬레이션

다음은 직접 문제를 체험해 볼 수 있는 샘플입니다.
스피커를 켜고 테스트를 해 보십시오.



소스

아래 링크를 클릭하여 다운받으십시오.


실험의 결론

Silverlight 2 Beta1에서는 123개 이하의 MediaElement만 만들어 사용해야 합니다.
123개 이상의 MediaElement가 필요한 경우에는 이미 생성해 놓은 MediaElement를
Source만 변경하여 재활용해야 합니다.

예를들어 한 Silverlight Page 내에 123개를 초과하는 동영상, 음악이 존재하는 경우에는
초과분에 해당하는 미디어는 재생을 시킬 수 없습니다.

다른 테스트를 통해 다음과 같은 사실도 추가적으로 알 수 있었습니다.

1) XAML에 <MediaElement ...> 형태로 추가를 해도 124번째부터는 작동을 안 합니다.
2) MediaElement마다 서로 다른 Source를 입력해 주어도 결과는 같습니다.

원인이 무엇인지 궁금합니다.
원인에 따라 차후에 발표되는 Beta2나 정식 릴리즈에서
개선될 수도 있고, 개선되지 않을 수도 있겠네요.

포럼 피드백

실버라이트 포럼에도 같은 글을 게시해 놓고 피드백을 기다리고 있습니다.
http://silverlight.net/forums/t/11735.aspx

설정

트랙백

댓글