[英]uwp unable to save file
我正在嘗試使用這些方法將文件保存到應用程序存儲中(當應用程序運行時):
首先,我從URI創建文件:
StorageFile file = await StorageFile.CreateStreamedFileFromUriAsync(name, uri, RandomAccessStreamReference.CreateFromUri(uri));
然后我將文件復制到應用程序的存儲空間以便以后使用它:
StorageFile file2 = await file.CopyAsync(ApplicationData.Current.LocalFolder, name, NameCollisionOption.ReplaceExisting);
但是第二個方法CopyAsync()沒有完成,然后在等待~5min后隨機失敗並出現此錯誤:
。
此外,每次調用CopyAsync()方法時,都會在應用程序的生命周期中添加進程:
。
當我單擊其中一個進程時, CopyAsync()方法結束。
要解決此問題,我必須重新啟動手機並卸載/安裝應用程序。
注意:當我在后台任務中嘗試此操作時,這會在100%的時間內失敗。
由於這篇文章,我能夠解決這個問題
代碼也適用於后台任務:)
這並不能解釋為什么FileStorage.CopyAsync()方法失敗,但這是一種解決方法,直到有人獲得更多信息。
(似乎當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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.