2016-10-03 22 views
0

私は画像を持っています。私が作成した画像ビューアで開きます。今私はこの画像を編集したい。だから私は塗料でこの画像を開き、私はそれを与える変更後に保存ボタンをクリックします。アクセス中に共有違反のエラーが発生しました。塗料でアクセス中に共有違反が発生しました

画像を開く前に、画像ビューアからファイル名を削除します。ここ

private void btnEditImage_Click(object sender, RoutedEventArgs e) 
     { 
      if (File.Exists(Helper.DefaultPath + listImages[count].Path)) 
      { 
       SetNullImage(); 
       string editPath = Helper.DefaultPath + listImages[count].Path; 
       if (File.Exists(editPath)) 
       { 
        Process my = new Process(); 
        my.StartInfo.FileName = "mspaint.exe"; 
        my.StartInfo.Arguments = "\"" + editPath + "\""; 
        my.StartInfo.CreateNoWindow = true; 
        my.EnableRaisingEvents = true; 
        my.Exited += new EventHandler(myProcess_Exited); 
        my.Start(); 
       } 
      } 
     } 
     private void myProcess_Exited(object sender, System.EventArgs e) 
     { 
      Dispatcher.Invoke(new Action(() => 
      { 
       SetImage(); 
      })); 
     } 

参照画像

画像ビューアで開く。..私のコードです: Open In Image viewer

おかげで...

エラー時に画像に変更を加えることとクリック保存時: Error when make changes in image and click on save

+0

あなたは使用しているイメージを使用してファイルのコピーを保存しようとしましたか?私にとっては、それは書き込み保護されているかファイルがまだ使用されている(多分あなたのprogammのストリーム?)ので、あなたのファイルを保存できないようですね – Mat

+0

あなたは他の提案をしますか?私は同じファイルで作業する必要があります。またはもしあなたが何らかの事例を持っていれば、plsもそれを共有します。 –

+0

私はちょうど教育上の推測をしました。あなたは[mcve]を提供しません。 [ask]もご覧ください。とにかく:このエラーは、ファイルが使用中であるか、書き込み権限がないために発生します。 – Mat

答えて

0

SetImage()メソッドに電話するときは、Image.FromFile()メソッドを使用していることを確認してください。それを使用している場合は、その代わりにベローズコードを使用してください

private Bitmap SetImage(){ 
     pictureBox1.Image = GetImageFromPath(ImagePath) 
    } 

    private Bitmap GetImageFromPath(string Path) 
    { 
     using (StreamReader streamReader = new StreamReader(Path)) 
     { 
      using (Bitmap tmpBitmap = (Bitmap)Bitmap.FromStream(streamReader.BaseStream)) 
      { 
       return tmpBitmap; 
      } 
     } 
    } 
関連する問題