2016-10-03 84 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

您是否嘗試使用您正在使用的圖像保存該文件的副本?對我來說,聽起來像油漆不能保存你的文件,因爲它是寫保護或文件仍在使用中(可能是你的程序流?) – Mat

+0

你會給任何其他建議。我必須在同一個文件上工作。或者如果您有任何示例,請分享它。 –

+0

我剛剛做出了一個有根據的猜測。你也不提供[mcve]。另請參閱[問]。無論如何:你得到這個錯誤,因爲該文件正在使用中,或者你沒有寫權限。 – 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; 
      } 
     } 
    }