내 응용 프로그램에서 wmplib을 사용하여 선택한 사운드를 재생하고 statechangeevent = 1 (미디어 플레이어가 중지됨)에서 close() 명령을 사용하여 플레이어를 닫고 URL을 ""로 설정합니다.Fileinfo delete 명령
이제는 현재 재생중인 사운드를 삭제하려고 시도했지만 실제로 디렉토리를 보면 파일이 삭제 되었기 때문에 실제로 삭제됩니다. 파일을 삭제할 때마다 디렉토리 내의 미디어 파일로 나열되는 컨트롤을 다시로드합니다. 그러나 여전히 디렉토리에서 이미 삭제 된 사운드를 찾습니다.
천천히 디버깅하는 방법을 시도해 보았습니다. 파일 정보 delete()
명령을 삭제하는 데 시간이 오래 걸리는 것으로 나타났습니다. 미디어 플레이어를 닫으면 미디어 플레이어를 닫을 때 시간이 오래 걸립니다. 현재 재생중인 노래를 삭제 한 후 모음을 다시로드하려고 시도했지만 삭제 된 노래는 아직 남아 있습니다. 미디어 플레이어가 노래를 재생하지 않을 때 삭제하려고하면 빨리 삭제되고 다시 불러오는 모음에는 사라진 노래의 결과가 표시됩니다.
질문 : 현재 재생중인 파일을 삭제하여 다시 불러 오기 모음에 올바른 노래 수가 표시되도록하려면 어떻게해야합니까?
도움을 주시면 감사하겠습니다.
내 코드는 다음과 같습니다.
DirectoryInfo di = new DirectoryInfo(@"C:/Sounds/Custom Sounds/");
FileInfo[] filepaths = MultipleFileFilter(di, "*.mp3,*.wma,*.wav");
for (int i = 0; i < filepaths.Length; i++)
{
if (Path.GetFileNameWithoutExtension(Convert.ToString(filepaths[i]))== deleteItem)
{
System.IO.FileInfo fi = new System.IO.FileInfo(@"C:/Sounds/Custom Sounds/" + Convert.ToString(filepaths[i]));
fi.Delete();
}
}
// Load the sounds
DirectoryInfo dii = new DirectoryInfo(@"C:/Sounds/Custom Sounds/");
FileInfo[] filess = MultipleFileFilter(dii, "*.mp3,*.wma,*.wav");
for (int i = 0; i < filess.Length; i++)
{
RadioButton rb = new RadioButton();
rb.Text = Path.GetFileNameWithoutExtension(filess[i].ToString());
rb.Name = Path.GetFileName(filess[i].ToString());
rb.CheckedChanged += new EventHandler(radioButton_Update);
Point lc = new Point(15, yPos);
rb.Location = lc;
panelSound.Controls.Add(rb);
lstbxCustomSounds.Items.Add(Path.GetFileNameWithoutExtension(rb.Text));
yPos += 20;
//add into the arraylist
controlsCollections.Add(rb);
}
어쩌면 이것이 문제입니까? 현재 재생중인 사운드 만 삭제되므로이 문제가 발생합니까?
private void wPlayer_PlayStateChange(int newstate)
{
if (newstate == 1)//Media finished
{
btnPlay.Text = "Play";
wplayer.close();
btnDelete.Enabled = true;
wplayer.URL = "";
}
else if (newstate == 3)
{
btnDelete.Enabled = false;
}
무엇이 문제입니까? –
더 이상 제안 사항이 있습니까? – Daniel