2017-07-03 8 views
-1

私はファイルを取得して2つのことをしています。サイズを変更してピクチャボックスに配置し、再度サイズを変更して保存します。プロセスはファイルにアクセスできません...別のプロセスで使用されているため

最初のサイズ変更操作は、サムネイルとしてウィンドウにドロップした後にうまくいきますが、サイズ変更後、2番目のサイズ変更操作は使用中であることを示していません。

私の理解から、ファイルまたはストリームを閉じていません。これに対する解決策は "using"コマンドですが、どこに置いてもエラーが出ます。

まずリサイズコード:

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

まず、IDisposableを実装していないため、配列を 'using'ステートメントで使用することはできません。 usingステートメントを削除してみてください。 – Ingenioushax

+0

2番目のサイズ変更操作はどこですか? –

+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

あなたの編集はどのように役立ちましたか?これは構築されません。 –

関連する問題