2016-07-30 15 views
3

내가 (응용 프로그램이 실행 중일 때) 이러한 방법을 사용하여 응용 프로그램 저장소에 파일을 저장하기 위해 노력하고있어 :파일을 저장할 수 없습니다 UWP

먼저 내가 URI에서 파일을 만듭니다

StorageFile file = await StorageFile.CreateStreamedFileFromUriAsync(name, uri, RandomAccessStreamReference.CreateFromUri(uri)); 

은 그럼 내가 나중에 사용할 수 있도록 응용 프로그램의 저장 장치에 파일을 복사 :

StorageFile file2 = await file.CopyAsync(ApplicationData.Current.LocalFolder, name, NameCollisionOption.ReplaceExisting); 

을하지만 두 번째 방법 CopyAsync() 무작위 FAI 다음 완료하지 않습니다 ~ 5 분을 기다린 후에이 오류가 표시됩니다.

Error screenshot

는 또한 프로세스가 응용 프로그램의 수명주기에 그가 CopyAsync을 내가 t를 호출 할 때마다 추가() 방법 :

Lifecycle processes.

프로세스 중 하나를 클릭하면 CopyAsync() 메서드가 종료됩니다.

이 문제를 해결하려면 휴대 전화를 재부팅하고 앱을 제거/설치해야합니다.

참고 : 백그라운드 작업에서이 작업을 시도하면 100 % 시간이지나칩니다. ,

+0

전체 프로젝트는 [my github repo] (https://github.com/rootasjey/citations365)에 있습니다. –

답변

3

나는 this post

에 문제 덕분에 해결할 수 있었다 그리고 코드뿐만 아니라 백그라운드 작업으로 작동합니다 :)이 FileStorage.CopyAsync은() 방법이 실패하는 이유

이 설명하지 않습니다 누군가가 더 많은 정보를 얻을 때까지는이를 해결할 수있는 방법입니다.

private async Task<StorageFile> DownloadImagefromServer(string URI, string filename) { 
     filename += ".png"; 
     var rootFolder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Citations365\\CoverPics", CreationCollisionOption.OpenIfExists); 
     var coverpic = await rootFolder.CreateFileAsync(filename, CreationCollisionOption.FailIfExists); 

     try { 
      HttpClient client = new HttpClient(); 
      byte[] buffer = await client.GetByteArrayAsync(URI); // Download file 
      using (Stream stream = await coverpic.OpenStreamForWriteAsync()) 
       stream.Write(buffer, 0, buffer.Length); // Save 

      return coverpic; 
     } catch { 
      return null; 
     } 
} 
:

코드 조각 (CopyAsync()가 백그라운드 작업에 실패 할 때 전경 응용 프로그램 백그라운드 작업에서 또는이 방법에 대한 FUTUR 호출을 차단합니다 보인다)

관련 문제