2012-02-27 2 views
3

이것은 이상한 일입니다. C#, WPF 앱에는 클릭하면 도움말 텍스트 역할을하는 짧은 오디오 클립이 재생됩니다. 시간의 약 50 %가 아름답게 작동합니다 ... 나머지 50 %는 잘릴 수 없으며 이유를 알 수 없습니다. 그것이 절단되는 지점조차도 다릅니다.WPF 응용 프로그램에서 소리가 잘리지 않는 이유는 무엇입니까?

나는 코드가 범위를 벗어나서 멈추고 다른 스레드에 넣었을 것이라고 생각했는데 전혀 작동하지 않았다. 그래서 이제는 무엇을해야할지 모르겠다. 해야 할 것.

다음은 내 버튼 클릭 이벤트 코드입니다.

try 
{ 
    string path = System.IO.Path.Combine(ConfigurationManager.AppSettings["MediaPath"], Global.Language); 
    path = System.IO.Path.Combine(path, "visitorTypes.mp3"); 

    if (Global.PlaySound) 
    { 
     string p = path.ToString(); 
     MediaPlayer mplayer = new MediaPlayer(); 
     mplayer.Open(new Uri(p, UriKind.Absolute)); 
     mplayer.Play(); 
    } 

    //a bunch of other code 

} 
catch (Exception ex) 
{ 
    Util.HandleError(ex); 
} 

생각 하시겠습니까?

답변

8

mplayer은 로컬 범위가 있기 때문에 가비지 수집 중일 수 있습니다. 미디어 플레이어 개체를 응용 프로그램 수명이있는 클래스의 멤버 변수로 만듭니다.

+0

그게 효과가 있었어! 나는 조금은 당혹 스럽다. 나는 그런 생각을하지 않았다. 당신의 솔루션은 본질적으로 내가 분리 된 스레드로하려고했던 것이지만, 물론, 당신은 실제로 뭔가를했습니다. 감사합니다. – David

관련 문제