この例外が発生します
別のプロセスによって使用されているため、プロセスはファイル'myfile.zip'にアクセスできません。
ファイルを削除しようとしたとき。エラーは理解できましたが、ファイルを使用している他のプロセスがわかりません。
WebClientを介してファイルを非同期でダウンロードしていますが、ファイルを削除する前にダウンロードをキャンセルします。つまり、プロセスはファイルを放棄する必要があります。
関連する方法は次のとおりです。これは単純なファイルダウンローダーです。
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
string downloadFile = textBox1.Text.Trim();
if (e.Key == Key.Return && downloadFile != "")
{
var dlg = new SaveFileDialog();
dlg.FileName = Path.GetFileName(downloadFile);
dlg.DefaultExt = Path.GetExtension(downloadFile);
var result = dlg.ShowDialog();
if(result.Value)
{
textBox1.Text = "";
textBox1.Focus();
_saveFile = dlg.FileName;
progressBar1.Dispatcher.Invoke(DispatcherPriority.Normal, new Action(() => progressBar1.Foreground = new SolidColorBrush(Color.FromRgb(0, 255, 0))));
_webClient.DownloadFileAsync(new Uri(downloadFile), _saveFile);
}
}
}
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (_webClient.IsBusy && _saveFile != null)
{
var result = MessageBox.Show("Download in progress. Are you sure you want to exit?", "Exit?", MessageBoxButton.YesNo, MessageBoxImage.Warning);
if (result == MessageBoxResult.Yes)
{
_webClient.CancelAsync();
File.Delete(_saveFile);
}
else
{
e.Cancel = true;
}
}
}