我的應用程序執行此操作,使用wmplib播放選定的聲音,當statechangeevent = 1(媒體播放器停止)時,我將使用close()命令關閉播放器並將URL設置爲「」;Fileinfo刪除命令
現在每次我試着刪除一個正在播放的聲音,實際上它會被刪除,因爲當我查看目錄時,該文件已被刪除。每次刪除一個文件後,我都會重新加載這些控件,這些控件將被列爲目錄中的媒體文件。但是,它仍然會找到目錄中已被刪除的聲音。
我試過這種方式,調試很慢,而且我發現文件信息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;
}
問題是什麼? – 2010-02-22 15:30:21
有沒有人有任何建議? – Daniel