0
Windows Phone 8 용 FTP 응용 프로그램을 만들고 파일을 격리 된 저장소에서 미디어 라이브러리로 저장하려고합니다. 파일이 isostore에 있는지 확인하고 true를 반환하지만 SaveSong 메서드를 사용하면 항상 예외가 throw됩니다. 다음은 코드 샘플입니다.격리 된 저장소에서 노래를 저장할 수 없습니다. SaveSong 메서드가 InvalidOperationException 오류를 throw합니다.
private async void contextMenuItem1_Click(object sender, RoutedEventArgs e)
{
string fileName = (sender as MenuItem).DataContext.ToString();
MediaLibrary library = null;
......
else if (fileName.EndsWith(".mp3") || fileName.EndsWith(".wav") || fileName.EndsWith(".aac"))
{
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
if (myIsolatedStorage.FileExists(fileName))
{
library = new MediaLibrary();
StorageFile localFile = await ApplicationData.Current.LocalFolder.GetFileAsync(fileName);
if (localFile != null)
{
//MessageBox.Show("StorageFile is: " + localFile.Name);
try
{
library.SaveSong(new Uri(localFile.Name, UriKind.RelativeOrAbsolute), null, SaveSongOperation.CopyToLibrary);
//MediaLibraryExtensions.SaveSong(media, new Uri(fileName, UriKind.RelativeOrAbsolute), null, SaveSongOperation.CopyToLibrary);
}
catch (InvalidOperationException ex)
{
MessageBox.Show("Exception caught: " + ex.Message);
}
}
}
else
MessageBox.Show("File does not exist in isostore");
}
}
누구든지 나를 도울 수 있다면 매우 감사해야합니다.
나는 해결책을 발견했다. 파일의 스트림이 닫히지 않은 것 같아서 이러한 문제가있었습니다. 때때로 나는 노래를 구할 수 있었고, 내가 할 수 없었던 때가 있었다. 파일 스트림을 닫으면 문제없이 작동하는 것 같습니다. – user3744413
'IBuffer databuffer = dataReader.DetachBuffer(); RaiseFtpFileTransferProgressedEvent (databuffer.Length, false); ftpFileInfo.LocalFileStream.WriteAsync (databuffer.ToArray(), 0, Convert.ToInt32 (databuffer.Length))를 기다립니다. } await ftpFileInfo.LocalFileStream.FlushAsync(); ftpFileInfo.LocalFileStream.Close(); dataReader.Dispose(); dataReader = null; – user3744413