2017-07-03 42 views
-1

我正在執行一個文件並執行2個操作。調整大小並將其放置在圖片框中,然後重新調整大小並保存。進程無法訪問文件...因爲它正在被另一個進程使用

第一個調整大小操作在將其作爲縮略圖放入窗口後很順利,但是在調整大小之後,第二個調整大小操作失敗,說它正在使用中。

從我的理解我沒有關閉文件或流。對此的解決方案是「使用」命令,但不管我放在哪裏,我都會遇到錯誤。

第一縮放代碼:

private void Form1_DragDrop(object sender, DragEventArgs e) 
    { 
     string[] droppedfiles = (string[])e.Data.GetData(DataFormats.FileDrop); 
     PB_Picture.Image = ScaleImage(Image.FromFile(droppedfiles[0]), 180, 140); 
    } 

我想:

private void Form1_DragDrop(object sender, DragEventArgs e) 
    { 
     using (string[] droppedfiles = (string[])e.Data.GetData(DataFormats.FileDrop)); 
     PB_Picture.Image = ScaleImage(Image.FromFile(droppedfiles[0]), 180, 140); 
    } 

,但得到的一些誤區。

Errors

+0

好吧,你不能在'using'語句中使用數組,因爲它沒有實現IDisposable。嘗試刪除使用語句。 – Ingenioushax

+0

第二次調整大小操作在哪裏? –

+0

您必須處理從Image.FromFile返回的圖像,而不是您的字符串數組。 –

回答

0

不知道其中第二調整操作我不能肯定,但是這應該解決您的問題。

private void Form1_DragDrop(object sender, DragEventArgs e) 
{ 
    string[] droppedfiles = (string[])e.Data.GetData(DataFormats.FileDrop); 
    using (var image = Image.FromFile(droppedfiles[0])){ 
     PB_Picture.Image = ScaleImage(image, 180, 140); 
    } 
} 
+0

這很完美。我知道我很接近!非常感謝! –

-1

using說法是不正確的:

private void Form1_DragDrop(object sender, DragEventArgs e) 
{ 
    using(string[] droppedfiles = (string[])e.Data.GetData(DataFormats.FileDrop)){ 
     PB_Picture.Image = ScaleImage(Image.FromFile(droppedfiles[0]), 180, 140); 
    } 
} 
+0

你的編輯如何幫助它?這甚至不會建立。 –

相關問題