client.DownloadFile() не закрывает файл
я пытаюсь скачать файл с помощью client.DownloadFile(), однако что бы я не делал, данный файл не закрывается.
using (WebClient client = new WebClient())
{
client.DownloadFile(link, $"tempImage.jpg");
client.Dispose();
}
File.Delete("tempImage.jpg");//Ошибка: файл используется другим процессом
Использую .Net Core 3.1. Заранее спасибо
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
WebClient является устаревшим классом
Используйте HttpClient, работает это примерно так:
private static readonly HttpClient client = new HttpClient();
static async Task Main(string[] args)
{
string link = "https://link";
string path = "tempImage.jpg";
await DownloadFileAsync(link, path);
File.Delete(path);
}
static async Task DownloadFileAsync(string link, string path)
{
using var stream = await client.GetStreamAsync(link);
using var fs = File.Create(path);
await stream.CopyToAsync(fs);
}
Что касается того что файл не закрывается, то этого по факту не может быть, так как судя по всем исходникам и логике, файл должен быть закрыт. В вашем коде из ненормального только лишний вызов Dispose(). То есть проблема за пределами показанного кода. Про антивирус в комментах вполне правдивая история.
Кстати, в .NET Core WebClient использует тот же HttpClient внутри себя.