현재 인스턴스 메서드에서 이미지를 다운로드하는 데 사용되는 HttpClient
의 인스턴스 변수가 있습니다. 메서드는 항상 Task.Run()
에서 호출됩니다. 이 방법은 1 분에 수천 번 호출 할 수 있으며 충돌이나 오류를 생성하지 않습니다. 하지만 방금 으로 전환하면 어떤 이점이 있는지 알기를 원합니다. 아마도 더 많은 스레드로부터 안전 할 수 있습니다. 여기 재사용 가능한 HttpClient 인스턴스와 정적 변수 (여러 스레드에서 많이 사용되는)?
HttpClient client = new HttpClient(); // Make this static?
// Always called in a Task.Run(() => DownloadImage(Obj));
public async void DownloadImage(Object obj)
{
FormUrlEncodedContent formContent = GetFormContent(Obj);
HttpResponseMessage Result = await client.PostAsync("URL", formContent).ConfigureAwait(false);
byte[] Data = Result.Content.ReadAsByteArrayAsync().Result;
StaticClass.Images[Obj.ID] = ImageSource.FromStream(() => new MemoryStream(Data));
formContent.Dispose();
Result.Dispose();
}
이 코드가있는 클래스의 동일한 인스턴스에서'DownloadImage'가 호출되면 차이가 없습니다. – Jonesopolis
@Jonesopolis 그래, 그렇습니다. –
자주 재사용되는 정적 HttpClient를 만드는 것이 적절한 지 아는 사람이 있습니까? 이 게시물은 다음과 같이 만들 것을 권장합니다. https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/ –