티스토리 뷰
반응형
여러 이미지의 url을 이용해서 Image 컨트롤에 출력하는 화면을 개발했습니다.
그런데, url이 유효하지 않은 녀석들이 있더군요
이미지의 url 유효성 검사를 하는 방법에 대해서 찾아보다가, 비교적 쉬운 방법이 있어서 적용을 해보았습니다.
1. Url 존재 여부 확인
_httpClient는 생성자에서 생성했습니다.
전체 소스는 Github를 참고하시면 됩니다.
/// <summary>
/// Url 존재 여부 확인
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
public async Task<bool> CheckUrlExistAsync(string url)
{
if (string.IsNullOrEmpty(url))
{
throw new ArgumentNullException($"url is required");
}
try
{
//자동 dispose를 위해서 using 사용, head 값만 반환하는 요청 생성
using HttpRequestMessage request = new(HttpMethod.Head, url);
//httpclient는 1개만 만들어서 계속 사용하는 것이 권장됨
using HttpResponseMessage response = await _httpClient.SendAsync(request);
return response.EnsureSuccessStatusCode().IsSuccessStatusCode;
}
catch (Exception)
{
return false;
}
}
2. Task.WhenAll을 이용해서 다량의 url 확인
/// <summary>
/// 존재여부 확인
/// </summary>
private async void OnCheck()
{
//CheckUrlExistAsync를 호출하는 다량의 Task 생성
var tasks = Urls.Select(u => CheckUrlExistAsync(u.Url)).ToList();
//모든 Task가 완료 될 때까지 await, _httpClient 1개는 한번에 4-5개의 SendAsync를 처리 합니다.
var resuls = await Task.WhenAll(tasks);
//모든 Task가 완료되면, 결과를 입력
for (int i = 0; i < resuls.Count(); i++)
{
Urls[i].Exist = resuls[i];
}
}
3. 실행
Check 버튼을 클릭해서 Url 체크를 실행합니다.
제일 아래 아이템의 url은 제가 일부러 jpg글씨를 j로 변경했습니다.
4. 소스
WpfTest/CheckUrlSample at master · kaki104/WpfTest · GitHub
반응형
'WPF .NET' 카테고리의 다른 글
Kiosk 만들기 - Part0 (0) | 2023.10.13 |
---|---|
CommunityToolkit.Mvvm Login 페이지 추가하고 사용 (0) | 2023.07.24 |
Visual Studio에서 다중 레파지토리 사용하기 (0) | 2023.05.10 |
이미지 사용하기 - WPF Pack URI Part2 (0) | 2023.04.12 |
이미지 사용하기 - WPF Pack URI Part1 (0) | 2023.04.07 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- LINQ
- #prism
- Build 2016
- uno-platform
- #Windows Template Studio
- IOT
- Bot Framework
- uno platform
- ComboBox
- Microsoft
- WPF
- PRISM
- UWP
- ef core
- .net 5.0
- MVVM
- .net
- Visual Studio 2022
- Windows 10
- C#
- #uwp
- visual studio 2019
- Always Encrypted
- dotNETconf
- kiosk
- windows 11
- XAML
- Cross-platform
- #MVVM
- Behavior
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함