私のプログラムは、ユーザーが既にクライアントに持っている可能性のある Windows ファイル システムからファイルをコピーし、アプリのサムネイル/プロファイル画像である既存の画像を置き換えたいと考えています。
これを行っている古いImの上に新しい画像を保存するには:
async private void saveImage(string name, int clientId)
{
StorageFolder folder = await ApplicationData.Current.LocalFolder.CreateFolderAsync("ProfileImages", CreationCollisionOption.OpenIfExists);
try
{
StorageFile newFileImage = await StorageFile.GetFileFromPathAsync(photoImageStoragePath);
StorageFile originalFileImage = await StorageFile.GetFileFromPathAsync(originalPhotoImageStoragePath);
await newFileImage.CopyAndReplaceAsync(originalFileImage);
}
catch (Exception ex)
{
var name2 = string.Format("{0}_{1}{2}", name, GenerateId(), ".png");
copyImageAsync(folder, name2, clientId);
}
}
そのため、元の画像が新しい画像に置き換えられています。そこのパスに基づいて、それぞれに新しいストレージ ファイルを作成しています。以前に使用したすべてのファイル ストリームが .disposed() であることを確認したので、アクセスが拒否され続ける理由について少し迷っています。copyandreplaceを使用した場合とmoveandreplaceを使用した場合に取得します。
正確なエラー コードは System.UnauthorizedAccess - {"アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))"}