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");   
     } 
    } 

누구든지 나를 도울 수 있다면 매우 감사해야합니다.

답변

0

파일 이름이나 파일 경로가 null 인 경우이 예외가 발생합니다. 또한 ID_CAP_MEDIALIB_AUDIO 기능이 추가되었는지 확인하십시오.

FYI

+0

나는 해결책을 발견했다. 파일의 스트림이 닫히지 않은 것 같아서 이러한 문제가있었습니다. 때때로 나는 노래를 구할 수 있었고, 내가 할 수 없었던 때가 있었다. 파일 스트림을 닫으면 문제없이 작동하는 것 같습니다. – user3744413

+0

'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