다음 코드를 사용합니다. http://pastebin.com/EgjbzqA2 기본적으로이 코드는 http://www.dreamincode.net/forums/topic/57357-mymusic-player/입니다. 프로그램이 하나의 파일을 반복해서 재생하기를 원하지만,이 함수는 어떤 이유로 작동하지 않습니다. 프로그램은 각 파일을 한 번 재생 한 다음 중지합니다.VisualBasic에서 WMP의 controls.play() 함수를 호출 할 수 없습니다.
답변
PlayAllowed Doo-Wop은 이벤트에서 다른 작업을 수행하도록 요청할 때 까다로운 동작을 피하기 위해 hackorama입니다. 종종 잘못되었으므로 이벤트를 발사 할 때 바닥 매트가 갑자기 흔들리는 것을 기대하지 않습니다. 기술적 인 용어는 매우 일반적인 문제 인 재입국을 잘 처리하지 못한다는 것입니다.
문제-entrancy 재하는 아주 우아한 해결책이있다는 키는 이벤트가 발생한 후 다시 같은 곡을 연주 할 수 요청을 지연 것입니다. Winforms에서 Control.BeginInvoke()를 사용하면 쉽게 지연을 얻을 수 있습니다. 목표가 모두 정상적으로 돌아 오면 실행됩니다. 그 기술 용어는 "프로그램이 메시지 루프를 다시 입력하기를 기다리고 있습니다"입니다. 그것은 아주 잘 당신과 일치하지 때문에 필요에 따라
Public Class Form1
Dim WithEvents Player3 As New WMPLib.WindowsMediaPlayer
Dim Song As String = "c:\temp\ding.wav"
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PlayCurrentSong()
End Sub
Private Sub Player3_PlayStateChange(ByVal NewState As Integer) Handles Player3.PlayStateChange
If NewState = WMPLib.WMPPlayState.wmppsMediaEnded Then
Me.BeginInvoke(New MethodInvoker(AddressOf PlayCurrentSong))
End If
End Sub
Private Sub PlayCurrentSong()
Player3.URL = Song
Player3.controls.play()
End Sub
End Class
코드를 조정할 : 그건 내가 윈도우 8 테스트 코드와 또 다시 같은 노래를 반복 아무런 문제가 없었다,이 코드에 매우 잘 작동 . 중요한 부분은 PlayStateChanged 이벤트 핸들러에서 Me.BeginInvoke() 호출입니다.
나는이 문제에 관심이 많습니다. 문제는 너무 열심히 시도하는 것입니다. 캡슐화 된 MP3 플레이어 파일의 내용을 분석하면 사운드 장벽이 바이너리 디지털 대신 아날로그 파일로 변환된다는 것을 알 수 있습니다. 이 문제는 "WMP"에 할당 된 경우에만 비디오 - 오디오 재생이라고 말합니다. 당신이 opperating 시스템을 전환하는 경우 작동 할 수도 있지만 전진하고 그냥 새 컴퓨터를 구입 후 대신 사용하십시오. 감사합니다.
매력처럼 작동합니다! 매우 감사. – ahota
lol^tenmorechar – Dylansq