Мое приложение делает это, воспроизводит выбранный звук с помощью wmplib, и после statechangeevent = 1 (медиаплеер остановлен) я закрываю плеер с помощью команды close() и устанавливаю URL-адрес в «»;
Теперь каждый раз, когда я пытался удалить звук, который воспроизводится в данный момент, на самом деле он будет удален, потому что, когда я смотрел каталог, файл был удален. Каждый раз после удаления файла я перезагружаю элементы управления, в которых будет указан медиафайл в каталоге. Однако он все равно найдет звук, который уже был удален в каталоге.
Я пробовал этот способ, медленно отлаживая, и обнаружил, что команда File info 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;
}